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~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)