如何使用Java API读写HDFS

如何使用Java API读写HDFS,第1张

//流读入和写入

InputStream in=null

//获取HDFS的conf

//读取HDFS上的文件系统

FileSystem hdfs=FileSystem.get(conf)

//使用缓冲流,进行按行读取的功能

BufferedReader buff=null

//获取日志文件的根目录

Path listf =new Path("hdfs://10.2.143.5:9090/root/myfile/")

//获取根目录下的所有2级子文件目录

FileStatus stats[]=hdfs.listStatus(listf)

//自定义j,方便查看插入信息

int j=0

for(int i = 0i <stats.lengthi++){

//获取子目录下的文件路径

FileStatus temp[]=hdfs.listStatus(new Path(stats[i].getPath().toString()))

for(int k = 0k <temp.lengthk++){

System.out.println("文件路径名:"+temp[k].getPath().toString())

//获取Path

Path p=new Path(temp[k].getPath().toString())

//打开文件流

in=hdfs.open(p)

//BufferedReader包装一个流

buff=new BufferedReader(new InputStreamReader(in))

String str=null

while((str=buff.readLine())!=null){

System.out.println(str)

}

buff.close()

in.close()

}

您好,很高兴为您解答。

通过Map/Reduce进行批处理递送到Apache Hadoop仍然是中枢环节。,但随着要从“超思维速度“分析方面获取竞争优势的压力递增,因此Hadoop(分布式文件系统)自身经历重大的发展。科技的发展允许实时查询,如Apache Drill,Cloudera Impala和Stinger Initiative正脱颖而出,新一代的资源管理Apache YARN 支持这些。

为了支持这种日渐强调实时性 *** 作,发布一个新MySQL Applier for Hadoop(用于Hadoop的MySQL Applier)组件。它能够把MySQL中变化的事务复制到Hadoop / Hive / HDFS。Applier 组件补充现有基于批处理Apache Sqoop的连接性。

这个组件(MySQL Applier for Hadoop)的复制是通过连接MySQL主服务,一旦二进制日志被提交,就读取二进制日志事务,并且把它们写到HDFS.

这个组件使用libhdfs提供的API,一个C库 *** 作HDFS中的文件。这库由Hadoop版本预编译生成的。

它连接MySQL主服务读二进制日志,然后提取发生在主服务上的行插入事件,解码事件,提取插入到行的每个字段的数据,并使用满意的处理程序得到被要求的格式数据。把它追加到HDFS 中一个文本文件。

数据库被映射为单独的目录,它们的表映射为子目录,保存在数据仓库目录。每个表的数据被写到Hive/ HDFS中文本文件(称为datafile1.txt)。数据可以用逗号格式分隔或其他格式,那可用命令行参数来配置的。

如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】

希望我的回答对您有所帮助,望采纳!

~ O(∩_∩)O~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6729351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存