gpt4 book ai didi

scala - 写入 HDFS - hive 时如何控制 Spark 流中的行数和/或输出文件大小?

转载 作者:可可西里 更新时间:2023-11-01 15:50:25 27 4
gpt4 key购买 nike

使用 Spark Streaming 读取和处理来自 Kafka 的消息并写入 HDFS - Hive。由于我希望避免创建许多垃圾文件系统的小文件,我想知道是否有办法确保最小文件大小和/或强制文件中输出行数最少的能力,除了超时。谢谢。

最佳答案

据我所知,无法控制输出文件中的行数。但是您可以控制输出文件的数量。

控制它并考虑您的数据集大小可能会帮助您满足您的需求,因为您可以计算输出中每个文件的大小。您可以使用 coalescerepartition 命令执行此操作:

df.coalesce(2).write(...)
df.repartition(2).write(...)

它们都用于创建作为参数给定的分区数。因此,如果您设置 2,则输出中应该有 2 个文件。

不同之处在于,使用repartition,您可以增加和减少分区,而使用coalesce,您只能减少。

此外,请记住,repartition 执行完全洗牌以在分区之间平均分配数据,这可能会占用大量资源和时间。另一方面,coalesce 不执行完全洗牌,而是合并现有分区。

您可以在这个其他答案中找到很棒的解释 here

关于scala - 写入 HDFS - hive 时如何控制 Spark 流中的行数和/或输出文件大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50227374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com