【发布时间】:2018-11-15 00:14:19
【问题描述】:
使用 Spark 流从 Kafka 主题中读取 Json 数据。
我使用 DataFrame 处理数据,稍后我希望将输出保存到 HDFS 文件。问题是使用:
df.write.save("append").format("text")
产生许多文件,有些很大,有些甚至是 0 字节。
有没有办法控制输出文件的数量?另外,为了避免“相反”的问题,有没有办法限制每个文件的大小,以便在当前达到一定大小/行数时写入一个新文件?
【问题讨论】:
-
第一部分有
coalesce/repartition,第二部分没有什么干净和简单的。您可能应该为此使用 bash 命令split。 -
@philantrovert 这不是真的,因为 spark 2.2 你可以使用
maxRecordsPerFile,例如df.write.option("maxRecordsPerFile", 10000)..,参见例如gatorsmile.io/… -
@RaphaelRoth 非常感谢!我根本不知道这件事。这非常有用。
-
@RaphaelRoth 这正是我想要的!谢谢。
标签: scala apache-spark apache-kafka apache-spark-sql spark-streaming