我正在尝试在hdfs上组合小文件。这仅用于历史目的,如果需要,将对大文件进行反汇编并运行该过程以创建hadoop表的数据。有没有办法简单地实现这一目标?例如,第一天收到100个小文件,合并成一个文件,然后第二天将更多文件添加/附加到以前创建的文件中等等......
答案 0 :(得分:1)
如果文件全部相同"架构",请说,像CSV或JSON。然后,欢迎您编写一个非常基本的Pig / Spark作业来读取整个文件夹的小文件,然后将其写回到其他地方,这很可能会根据HDFS块将所有文件合并为更大的文件大小
您还提到了Hive,因此对小文件使用外部表,并使用CTAS查询创建一个单独的表,从而创建一个MapReduce作业,就像Pig一样。
IMO,如果可能的话,最佳解决方案是建立一个系统"上游" Hadoop,它将您的较小文件批处理为较大的文件,然后将它们转储到HDFS。 Apache NiFi是用于此目的的有用工具。