无法使用Spark合并小型ORC文件

时间:2018-09-06 09:56:22

标签: apache-spark hadoop hadoop2 orc

我有一个外部ORC表,其中包含大量的小文件,这些小文件每天都来自源。我需要将这些文件合并成更大的文件。

我试图将ORC文件加载到火花并使用覆盖方法保存

val fileName = "/user/db/table_data/"  //This table contains multiple partition on date column with small data files.
val df = hiveContext.read.format("orc").load(fileName)
df.repartition(1).write.mode(SaveMode.Overwrite).partitionBy("date").orc("/user/db/table_data/)

但是mode(SaveMode.Overwrite)正在从HDFS删除所有数据。当我尝试不使用mode(SaveMode.Overwrite)方法时,它抛出的错误文件已经存在。

有人可以帮助我继续吗?

1 个答案:

答案 0 :(得分:0)

按照@Avseiytsev的建议,我将合并的orc文件存储在HDFS的不同文件夹中作为源,并在作业完成后将数据移至表路径。