2017-09-25 39 views
0

小文件我想小文件的HDFS相结合。这仅仅是出于历史目的,如果需要的话,大文件将被反汇编,并在整个过程中运行,为hadoop表创建数据。有没有办法简单地实现这一点?例如,有一天收到100个个小文件,合并成一个文件,然后每天两次加/多个文件追加到以前创建的文件,等...Hadoop中

+0

“为Hadoop表” ......你的意思是蜂巢? HBase的? Hadoop没有“表”的概念 –

+0

是的,我的意思是配置单元。 –

回答

1

如果这些文件都是一样的“模式”,让我们说如CSV或JSON。然后,欢迎您来写一个非常基本的猪/星火职业阅读的小文件整个文件夹,然后写回了别的地方,将所有的文件极有可能合并成基础上,HDFS块大小更大的尺寸。

你也提到了Hive,因此对于小文件使用外部表,并使用CTAS查询来创建单独的表,从而创建一个MapReduce作业,这与Pig的做法基本相同。

IMO,如果可能的话,则最优解是设置一个系统的Hadoop“上游”,这将批生产较小的文件成较大的文件,然后倾倒出来到HDFS。 Apache NiFi是一个用于此目的的有用工具。

+0

我瞪大眼睛有两种猪和火花,结果一直低于启发,(例如,我发现文章,说明猪使用Hadoop和现在存在的附加文件中没有“推荐”的解决方案。)。你会知道一个有助于这个项目的教程吗? –

+0

HDFS没有对文件追加的一流支持。您读取多个文件,然后将它们压缩/合并到其他文件中。 –

+0

关于猪,可以使用'STORE'和'LOAD'命令。但是,如果你有Java/Python背景,Spark更“编程友好”。如前所述,如果您从选择对象中创建TABLE,您也可以使用不同的格式,如ORC或Parquet –