【问题标题】:Number of splits in dataset exceeds dataset split limit ,Dremio+Hive+Spark数据集中的分割数超过数据集分割限制,Dremio+Hive+Spark
【发布时间】:2019-11-06 06:47:10
【问题描述】:
我们有一个由 Hadoop+Hive+Spark+Dremio 组成的堆栈,因为 Spark 为单个 Hive 分区写入许多 HDFS 文件(取决于工作人员)Dremio 在查询表时失败,因为 HDFS 文件的数量超出限制,有什么方法可以解决这个问题,而无需手动设置较少的 spark 工作人员?(我们不想失去 spark 分布式的性能和好处)。
【问题讨论】:
标签:
apache-spark
hadoop
hive
dremio
【解决方案1】:
您可以使用repartition,它将为每个分区创建 1 个文件。这将确保您每个分区至少有 1 个任务,这将确保您的 spark 作业中保持足够的并行度。
df.repartition($"a", $"b", $"c", $"d", $"e").write.partitionBy("a", "b", "c", "d", "e").mode(SaveMode.Append).parquet(s"$location")