0

我们有一个由 Hadoop+Hive+Spark+Dremio 组成的堆栈,因为 Spark 为单个 Hive 分区写入许多 HDFS 文件(取决于工作人员)Dremio 在查询表时失败,因为超出了 HDFS 文件的数量限制,有没有无需手动在 spark 中设置较少数量的工人来解决此问题的方法吗?(我们不想失去 spark 分布式性能和好处)。

4

1 回答 1

0

您可以使用repartitionwhich 将为每个分区创建 1 个文件。这将确保您每个分区至少有 1 个任务,这将确保在您的 spark 作业中保持足够的并行性。

df.repartition($"a", $"b", $"c", $"d", $"e").write.partitionBy("a", "b", "c", "d", "e").mode(SaveMode.Append).parquet(s"$location")
于 2019-11-05T22:47:10.223 回答