我使用以下代码将spark DataFrame保存到JSON文件
unzipJSON.write.mode("append").json("/home/eranw/Workspace/JSON/output/unCompressedJson.json")
输出结果为:
part-r-00000-704b5725-15ea-4705-b347-285a4b0e7fd8
.part-r-00000-704b5725-15ea-4705-b347-285a4b0e7fd8.crc
part-r-00001-704b5725-15ea-4705-b347-285a4b0e7fd8
.part-r-00001-704b5725-15ea-4705-b347-285a4b0e7fd8.crc
_SUCCESS
._SUCCESS.crc
1.如何生成单个JSON文件而不是每行一个文件?
1.如何避免 *crc文件?
1.如何避免SUCCESS文件?
3条答案
按热度按时间66bbxpm51#
如果您需要单个文件,则需要在调用write之前对单个分区执行
coalesce
,因此:就我个人而言,我发现输出文件的数量取决于调用
write
之前所拥有的分区的数量,这一点相当烦人--特别是在使用partitionBy
执行write
时--但据我所知,目前没有其他方法。我不知道是否有办法禁用.crc文件--我不知道有什么办法--但是您可以通过在Spark上下文的hadoop配置上设置以下内容来禁用_SUCCESS文件。
请注意,您可能还希望使用以下命令禁用元数据文件的生成:
显然,生成元数据文件需要一些时间(参见this blog post),但实际上并不那么重要(根据this)。
lztngnrs2#
只是在上面的答案中有一点更新。要禁用crc和SUCCESS文件,只需在spark会话中设置属性,如下所示(示例)
06odsfpq3#
在.write时忽略crc文件