JAVA代码操作HDFS

news/2024/7/8 12:42:11/文章来源:https://blog.csdn.net/weixin_52851967/article/details/127050613

1、客户端环境准备

(1)将Hadoop-2.9.2安装包解压到非中文路径(例如:E:\hadoop-2.9.2)

(2) 配置HADOOP_HOME环境变量

(3) 配置Path环境变量。

(4) 创建一个Maven工程ClientDemo

(5)导入相应的依赖坐标+日志配置文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lagou.hdfs</groupId><artifactId>client_demo</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>RELEASE</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.8.2</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.9.2</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.9.2</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>2.9.2</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.5.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build></project>

        为了便于控制程序运行打印的日志数量,需要在项目的src/main/resources目录下,新建一个文件,命名为“log4j.properties”,文件内容:

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

(6)创建包名:com.lagou.hdfs

(7)创建HdfsClient类

public class HdfsClientDemo {@Testpublic void testMkdirs() throws Exception {// 1、获取Hadoop 集群的configuration对象Configuration configuration = new Configuration();configuration.set("fs.defaultFS", "hdfs://hadoop1:9000"); // 设置这个属性以后,获取FileSystem对象时,就不在需要创建URI连接对象了。使用这种方式,不能指定对象,可能会引发权限不足问题,解决办法参考下面文章// 2、根据configuration获取FileSystem对象// FileSystem fileSystem = FileSystem.get(new URI("hdfs://hadoop1:9000"), configuration, "root");FileSystem fileSystem = FileSystem.get(configuration);// 3、使用FileSystem对象创建一个测试目录fileSystem.mkdirs(new Path("/api_test11"));// 4、释放FileSystem对象(类似数据库连接)fileSystem.close();}
}

注意:

(1)windows解压安装Hadoop后,在调用相关API操作HDFS集群时可能会报错,这是由于Hadoop安装缺少windows操作系统相关文件所致,如下图:

解决方案: 

        从资料文件夹中找到winutils.exe拷贝放到windows系统Hadoop安装目录的bin目录下即可!!

链接:文件地址 

(2)HDFS文件系统权限问题

        如果不指定操作HDFS集群的用户信息,默认是获取当前操作系统的用户信息,出现权限被拒绝的问题,报错如下:

 

  • hdfs的文件权限机制与linux系统的文件权限机制类似!!
  • r:read w:write x:execute 权限x对于文件表示忽略,对于文件夹表示是否有权限访问其内容
  • 如果linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS当中的owner就是zhangsan
  • HDFS文件权限的目的,防止好人做错事,而不是阻止坏人做坏事。HDFS相信你告诉我你是谁,你就是谁!!

解决方案:

  • 指定用户信息获取FileSystem对象
  • 关闭HDFS集群权限校验

    vim hdfs-site.xml

    #添加如下属性
    <property><name>dfs.permissions</name><value>true</value>
    </property>

    修改完成之后要分发到其它节点,同时要重启HDFS集群

  • 基于HDFS权限本身比较鸡肋的特点,我们可以彻底放弃HDFS的权限校验,如果生产环境中我们可以考虑借助kerberos以及sentry等安全框架来管理大数据集群安全。所以我们直接修改HDFS的根目录权限为777

    hadoop fs -chmod -R 777 /

2、HDFS的API操作

        注:为了后续的使用方便,我对代码进行了改造,将创建Configuration以及FileSystem对象的代码移到了了@Before注解上,关闭流的操作移到了@After注解上,使我们后续的操作重点关注于HDFS api 的使用上。

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.fs.permission.FsPermission;
import org.apache.hadoop.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;public class HdfsClientDemo {FileSystem fileSystem = null;@Beforepublic void init() throws Exception {Configuration configuration = new Configuration();configuration.set("fs.defaultFS", "hdfs://hadoop1:9000");// configuration.set("dfs.replication","2");fileSystem = FileSystem.get(configuration);}// 现在就只写我们使用FileSystem操作api了@Afterpublic void destroy() throws Exception {fileSystem.close();}}

(1)上传文件

 // 上传文件@Testpublic void copyFromLocalToHdfs() throws Exception {/*** src:源文件目录,本地路径* dst:目标文件目录,hdfs路径*/fileSystem.copyFromLocalFile(new Path("C:/Users/小不点/Desktop/VPN.txt"), new Path("/VPN.txt"));// 上传文件到hdfs默认的是3个副本/**如何改变上传文件的副本数量* 1、configuration对象中指定新的副本数量,就是@Before注解下面代码块,注释掉的那一行代码* 2、创建xml文件,在里面添加属性*/}

将hdfs-site.xml拷贝到项目的根目录下

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>dfs.replication</name><value>1</value></property>
</configuration>

参数优先级排序:(1)代码中设置的值 >(2)用户自定义配置文件 >(3)服务器的默认配置

(2)下载文件

   // 下载文件@Testpublic void copyFromHdfsToLocal() throws Exception {/*** 三个参数* boolean:是否删除源文件* src:源文件目录,hdfs路径* dst:目标文件目录,本地路径*/fileSystem.copyToLocalFile(true, new Path("/VPN.txt"), new Path("D:/下载/VPN.txt"));//  四个参数// boolean delSrc 指是否将原文件删除// Path src 指要下载的文件路径// Path dst 指将文件下载到的路径// boolean useRawLocalFileSystem 是否开启文件校验}

(3)删除文件/文件夹

 // 删除文件或文件夹@Testpublic void deleteFile() throws IOException {// boolean值代表是否递归删除文件fileSystem.delete(new Path("/api_test11"), true);}

(4)查看文件名称、权限、长度、块信息

  // 遍历hdfs的根目录得到文件夹以及文件夹的信息:名称、权限、大小@Testpublic void listFiles() throws Exception {// 得到一个迭代器:装有指定目录下所有的文件信息RemoteIterator<LocatedFileStatus> remoteIterator = fileSystem.listFiles(new Path("/"), true);// 遍历迭代器while (remoteIterator.hasNext()) {LocatedFileStatus fileStatus = remoteIterator.next();// 文件名称String fileName = fileStatus.getPath().getName();// 长度long len = fileStatus.getLen();// 权限FsPermission permission = fileStatus.getPermission();// 所属组String group = fileStatus.getGroup();// 所属用户String owner = fileStatus.getOwner();System.out.println(fileName + "\t" + len + "\t" + permission + "\t" + group + "\t" + owner);System.out.println("================================");// 块信息BlockLocation[] blockLocations = fileStatus.getBlockLocations();for (BlockLocation blockLocation : blockLocations) {String[] hosts = blockLocation.getHosts();for (String host : hosts) {System.out.println("主机名称:" + host);}}}}

(5)文件夹判断

// 文件夹的判断@Testpublic void isFile() throws Exception {FileStatus[] fileStatuses = fileSystem.listStatus(new Path("/"));for (FileStatus fileStatus : fileStatuses) {boolean flag = fileStatus.isFile();if (flag) {System.out.println("文件:" + fileStatus.getPath().getName());} else {System.out.println("文件夹:" + fileStatus.getPath().getName());}}}

(6)I/O流操作HDFS

        以上我们使用的API操作都是HDFS系统框架封装好的。我们自己也可以采用IO流的方式实现文件的上传和下载。

  // 使用IO流操作HDFS// 上传文件:准备输入流读取本地文件,使用hdfs的输出流写数据到hdfs@Testpublic void uploadFileIO() throws Exception {// 读取本地文件的输入流FileInputStream inputStream = new FileInputStream(new File("C:/Users/小不点/Desktop/test.txt"));// 准备写数据到hdfs的输出流FSDataOutputStream outputStream = fileSystem.create(new Path("/Java.txt"));// 输入流数据拷贝到输出流IOUtils.copyBytes(inputStream, outputStream, 4096, true); // 最后一个参数代表是否关闭流,true为关闭}// 下载文件@Testpublic void downloadFile() throws Exception {// 读取hdfs文件的输入流FSDataInputStream inputStream = fileSystem.open(new Path("/lagou.txt"));// 准备写数据到本地的输出流FileOutputStream outputStream = new FileOutputStream("C:/Users/小不点/Desktop/张三.txt");// 输入流数据拷贝到输出流IOUtils.copyBytes(inputStream, outputStream, 4096, true); // 最后一个参数代表是否关闭流,true为关闭}

(7)seek 定位读取

 // seek定位读取hdfs文件:使用IO流读取/lagopu.txt文件内容输出两次,本质就是读取文件内容两次并输出@Testpublic void seekReadFile() throws Exception {// 创建读取hdfs文件的输入流FSDataInputStream inputStream = fileSystem.open(new Path("/Java.txt"));// 控制台输出System.out// 实现流拷贝IOUtils.copyBytes(inputStream, System.out, 4096, false);// 再次读取文件inputStream.seek(0);// 定位从0偏移量(文件头部)再次读取IOUtils.copyBytes(inputStream, System.out, 4096, false); // false代表不关闭流// 关闭输入流IOUtils.closeStream(inputStream);}

全部完整代码

package com.lagou.hdfs;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.fs.permission.FsPermission;
import org.apache.hadoop.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;public class HdfsClientDemo {FileSystem fileSystem = null;@Beforepublic void init() throws Exception {Configuration configuration = new Configuration();configuration.set("fs.defaultFS", "hdfs://hadoop1:9000");// configuration.set("dfs.replication","2");fileSystem = FileSystem.get(configuration);}@Testpublic void testMkdirs() throws Exception {// 1、获取Hadoop 集群的configuration对象Configuration configuration = new Configuration();configuration.set("fs.defaultFS", "hdfs://hadoop1:9000"); // 设置这个属性以后,获取FileSystem对象时,就不在需要创建URI连接对象了// 2、根据configuration获取FileSystem对象// FileSystem fileSystem = FileSystem.get(new URI("hdfs://hadoop1:9000"), configuration, "root");FileSystem fileSystem = FileSystem.get(configuration);// 3、使用FileSystem对象创建一个测试目录fileSystem.mkdirs(new Path("/api_test11"));// 4、释放FileSystem对象(类似数据库连接)fileSystem.close();}@Afterpublic void destroy() throws Exception {fileSystem.close();}// 上传文件@Testpublic void copyFromLocalToHdfs() throws Exception {/*** src:源文件目录,本地路径* dst:目标文件目录,hdfs路径*/fileSystem.copyFromLocalFile(new Path("C:/Users/小不点/Desktop/VPN.txt"), new Path("/VPN.txt"));// 上传文件到hdfs默认的是3个副本/**如何改变上传文件的副本数量* 1、configuration对象中指定新的副本数量* 2、创建xml文件,在里面添加属性*/}// 下载文件@Testpublic void copyFromHdfsToLocal() throws Exception {/*** boolean:是否删除源文件* src:源文件目录,hdfs路径* dst:目标文件目录,本地路径*/fileSystem.copyToLocalFile(true, new Path("/VPN.txt"), new Path("D:/下载/VPN.txt"));}// 删除文件或文件夹@Testpublic void deleteFile() throws IOException {// boolean值代表是否递归删除文件fileSystem.delete(new Path("/api_test11"), true);}// 遍历hdfs的根目录得到文件夹以及文件夹的信息:名称、权限、大小@Testpublic void listFiles() throws Exception {// 得到一个迭代器:装有指定目录下所有的文件信息RemoteIterator<LocatedFileStatus> remoteIterator = fileSystem.listFiles(new Path("/"), true);// 遍历迭代器while (remoteIterator.hasNext()) {LocatedFileStatus fileStatus = remoteIterator.next();// 文件名称String fileName = fileStatus.getPath().getName();// 长度long len = fileStatus.getLen();// 权限FsPermission permission = fileStatus.getPermission();// 所属组String group = fileStatus.getGroup();// 所属用户String owner = fileStatus.getOwner();System.out.println(fileName + "\t" + len + "\t" + permission + "\t" + group + "\t" + owner);System.out.println("================================");// 块信息BlockLocation[] blockLocations = fileStatus.getBlockLocations();for (BlockLocation blockLocation : blockLocations) {String[] hosts = blockLocation.getHosts();for (String host : hosts) {System.out.println("主机名称:" + host);}}}}// 文件夹的判断@Testpublic void isFile() throws Exception {FileStatus[] fileStatuses = fileSystem.listStatus(new Path("/"));for (FileStatus fileStatus : fileStatuses) {boolean flag = fileStatus.isFile();if (flag) {System.out.println("文件:" + fileStatus.getPath().getName());} else {System.out.println("文件夹:" + fileStatus.getPath().getName());}}}// 使用IO流操作HDFS// 上传文件:准备输入流读取本地文件,使用hdfs的输出流写数据到hdfs@Testpublic void uploadFileIO() throws Exception {// 读取本地文件的输入流FileInputStream inputStream = new FileInputStream(new File("C:/Users/小不点/Desktop/test.txt"));// 准备写数据到hdfs的输出流FSDataOutputStream outputStream = fileSystem.create(new Path("/Java.txt"));// 输入流数据拷贝到输出流IOUtils.copyBytes(inputStream, outputStream, 4096, true);}// 下载文件@Testpublic void downloadFile() throws Exception {// 读取hdfs文件的输入流FSDataInputStream inputStream = fileSystem.open(new Path("/lagou.txt"));// 准备写数据到本地的输出流FileOutputStream outputStream = new FileOutputStream("C:/Users/小不点/Desktop/张三.txt");// 输入流数据拷贝到输出流IOUtils.copyBytes(inputStream, outputStream, 4096, true);}// seek定位读取hdfs文件:使用IO流读取/lagopu.txt文件内容输出两次,本质就是读取文件内容两次并输出@Testpublic void seekReadFile() throws Exception {// 创建读取hdfs文件的输入流FSDataInputStream inputStream = fileSystem.open(new Path("/Java.txt"));// 控制台输出System.out// 实现流拷贝IOUtils.copyBytes(inputStream, System.out, 4096, false);// 再次读取文件inputStream.seek(0);// 定位从0偏移量(文件头部)再次读取IOUtils.copyBytes(inputStream, System.out, 4096, false);// 关闭输入流IOUtils.closeStream(inputStream);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_392024.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用SqlSugar连接多个数据库(sqlserver,sqlite,mysql)

有时候&#xff0c;一个项目只有一个数据库&#xff0c;比如只有SQLite&#xff0c;或者MySQL数据库&#xff0c;那么我们只需要使用一个固定的数据库即可。但是一个项目如果写好了&#xff0c;有多个用户使用&#xff0c;但是多个用户使用不同的数据库&#xff0c;这个时候&am…

多测师肖sir_疑难杂症_linux中设置中文,数据库中插入中文

一、linux中如何切换出中文 讲解是Centos6.5版本 &#xff08;1&#xff09;第一步打开控制台输入安装中文输入法&#xff1a; yum install “Chinese Support” &#xff08;2&#xff09;查清自己目前的系统版本&#xff1a;cat /etc/issue 查看系统版本&#xff1a; 下载好…

操作系统漏洞利用思路

目录 前言&#xff1a; &#xff08;一&#xff09;漏洞发现工具 0x01、Goby 0x02、Nmap 1、vuln 2、vulscan 0x03 Nessus &#xff08;二&#xff09;漏洞利用 0x01、框架利用 0x02、单点EXP 0x03 搜索文章 &#xff08;三&#xff09;修补 1、打上补丁 2、关闭…

node.js基于微信小程序的外卖订餐系统 uniapp 小程序

美食是人类永恒的话题&#xff0c;无论是在古代还是现代人们对美食都有一种非常的热爱在里面&#xff0c;但是随着时代的发展&#xff0c;人们可能没有更多的时间去研究美食&#xff0c;很多时候人们在下班或者放学之后更希望通过网络来进行订餐&#xff0c;为此我开发了本基于…

顺序栈和链式栈(C++实现)

数据结构&#xff08;面向对象方法与C语言描述&#xff09;&#xff08;第2版&#xff09;顺序栈和链式栈内容整理 栈 栈&#xff08;stack&#xff09;可定义为只允许在表的末端进行插入和删除的线性表。允许插入和删除的一端叫做栈顶&#xff08;top&#xff09;&#xff0…

学习:网络基础知识 HTTP协议之请求报文

HTTP协议 和 安全版 HTTPS协议 HTTP(Hyper Text Transfer Protocol)超文本传输协议 HTTP协议 是基于TCP协议 默认端口是80 功能:用来规定客户端和服务端的数据传输格式 特点:基于请求与响应模式的、无状态、无连接的应用层协议 示例:粉色部分是请求 紫色是响应部分 HTTP请…

Pro09丨高频波动率RSJ与成交量因子迭代升级

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 『正文』 ˇ 大家好&#xff0c;今天我们分享Pro系列第9篇量化策略及内容说明。 在2021年7月中&#xff0c;某开源平台发布一个研报策略复现文章&#xff0c;而后大家象征性的积极讨论了一番&#xf…

大裁员时代,我们究竟该如何提升自己?

我以为进大厂可以逃过 35 岁的坎儿&#xff0c;结果还没到 35 呢就遇上了大裁员。。。被裁的那一个月&#xff0c;我拿着公司给的 2N 在家躺了大半个月&#xff0c;刚开始是不甘&#xff0c;到后面每个月一万多的房贷催着我不得不重新审视自己&#xff0c;随后踏上了海投之路。…

贤鱼的刷题日常--P2671 [NOIP2015 普及组] 求和

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;学会求和题目 ✅创作者&#xff1a;贤鱼 &#x1f389;个人主页&#xff1a;贤鱼的个人主页 &#x1f525;专栏系列&#xff1a;c 求和题目[NOIP2015 普及组] 求和题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例…

电脑屏幕监控,员工行为监控,上网行为监控解决方案

本文镜像&#xff1a;https://linkpi.cn/archives/1612 本文链接&#xff1a;https://blog.csdn.net/weixin_45326556/article/details/127050574 电脑屏幕监控,员工行为监控,上网行为监控解决方案1. 背景2. 设备清单3. 设备连接示意图3.1 灵派编码器 USB摄像头方式3.2 灵派编…

C++运算符重载

运算符重载引入一.运算符重载是什么二.运算符重载的格式三.部分运算符重载的实现3.1 简单‘ ’ ‘ - ’ ‘ * ’运算符重载3.2 ,- - 运算符3.3 运算符3.4 <<&#xff0c;>>运算符四.运算符重载注意事项五.运算符重载的限制六.MyString的简单实现引入 对于基本类型…

java中的IO流

IO流1、File类1.1 获取文件或目录信息1.2 操作文件1.3 操作目录1.4 案例&#xff1a;递归列出目录的下一级1.5 案例&#xff1a;递归列出目录下的所有Java源文件2、IO流的分类和设计2.1 输出纯文本数据2.2 读取纯文本数据2.3 按行读取2.4 复制文件基本版2.5 复制文件提升效率版…

硬件基础:电路基础知识

电路的研究方式&#xff1a;从电路模型出发&#xff0c;研究电路基本理论、分析方法以及工程技术中典型类电路的特点和规律。 电路的四类知识 基础知识 电路模型&#xff0c;电路基本物理量&#xff0c;电路基本元件&#xff0c;基尔霍夫定律&#xff0c;磁路的基础知识。。。工…

CloudCompare——软件汉化

目录1.效果预览2.软件实现1.效果预览 如图所示&#xff0c;软件界面上显示内容翻译成中文。 2.软件实现 1、下载最新版本的CloudCompare&#xff0c;如图所示&#xff0c;下载箭头所指的任意一个版本即可。 官网下载链接&#xff1a;http://www.danielgm.net/cc/release/ …

数据分析:单元4 Matplotlib库入门

Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化&#xff0c;并且提供多样化的输出格式。在这里我将介绍一下它的相关知识&#xff0c;你可以在这里快速学会如何用它画出好看的数据图像&#xff0c;如果你想学习到更多的知识&#xf…

跟 HTML 说hello

目 录 ​1.HTML的骨架标签 2.迎接自己的第一个HTML网页 聊起前端,最最最基础的应该就是HTML语言了哈!首先, HTML 指的是超文本标记语言 (Hyper Text Markup Language)是用来描述网页的一种语言 。超文本的含义就在于它可以加入图片、声音、动画、多媒体等内容&#xff08…

8、React路由

1、介绍 SPA概念&#xff1a;单页Web应用&#xff08;single page web application&#xff09;&#xff0c;就是只有一张Web页面的应用&#xff0c;由一个主页面和多个页面片段组成&#xff0c;由JS控制页面片段的展示与否。整个页面不会刷新&#xff0c;只会做局部页面的更新…

第三章、运输层(重点知识梳理)

3.1概述和运输层服务 3.1.1运输层概述 运输层协议是为运行在不同主机上的应用进程之间提供逻辑通信 传输协议运行在端系统 发送方&#xff1a;将应用层的报文分成报文段&#xff0c;然后传递给网络层接收方&#xff1a;将报文段重组成报文&#xff0c;然后传递给应用层有多个传…

前端设计走查平台实践(前端篇)

项目背景 随着前端业务的不断发展&#xff0c;前端对设计稿的还原程度也成为了影响用户对产品体验的一个关键指标&#xff0c;作为最靠近用户侧的研发&#xff0c;前端工程师通常需要和设计师同学通力配合来提升用户体验。其中&#xff0c;设计走查是设计同学最常见的测试前端同…

以赛促产 以赛引才 |第六届世界智能大会·中国华录杯数据湖算法大赛正式启动

6月24日&#xff0c;由天津市委网信办、天津市工业和信息化局、天津市津南区人民政府、中国华录集团有限公司主办&#xff0c;北京易华录信息技术股份有限公司承办的“第六届世界智能大会中国华录杯数据湖算法大赛”正式启动。 赛事发布 本次大赛以数据“收、存、治、用、易”…