我使用databrick spark-avro(对于Spark 1.5.5.2
)将从ElasticSearch获取的DataFrame保存为Avro进入HDFS。在我的DataFrame上完成一些处理之后,我使用以下命令将数据保存在HDFS上:
df.write.avro("my/path/to/data")
一切正常,我可以使用Hive读取我的数据。我当时面临的最大问题是,我无法将两次数据写入同一路径(例如,以"my/path/to/data"
作为输出运行我的脚本两次)。只要我需要逐步添加数据,我该如何解决这个问题?我想过一些解决方法,比如
但我想知道我是否能找到一种方法来实际解决Spark上的这个问题。
答案 0 :(得分:2)
您应该提供适当的模式。如果要替换现有数据,请覆盖:
df.write.mode("overwrite").avro("my/path/to/data")
如果你想添加,请附加
df.write.mode("append").avro("my/path/to/data")
答案 1 :(得分:2)
如果您的数据不经常更新,则附加可以正常工作
df.write.mode(SaveMode.Append).avro("outputpath")
如果您经常更新,那么它会创建大量文件(也可能是空文件) 要解决这个问题,你需要
希望这有帮助