dataset splits number exceeds dataset split limit ,Dremio+Hive+Spark
Number of splits in dataset exceeds dataset split limit ,Dremio+Hive+Spark
我们有一个由 Hadoop+Hive+Spark+Dremio 组成的堆栈,因为 Spark 为单个 Hive 分区写入许多 HDFS 文件(取决于工作人员)Dremio 在查询 table 时失败,因为数量HDFS files limit is exceeded ,有什么办法可以解决这个问题,而不必手动在 spark 中设置更少的 worker 数量?(我们不想失去 spark 分布式的性能和好处)。
您可以使用 repartition
每个分区创建 1 个文件。这将确保您每个分区至少有 1 个任务,这将确保您的 spark 作业中保持足够的并行性。
df.repartition($"a", $"b", $"c", $"d", $"e").write.partitionBy("a", "b", "c", "d", "e").mode(SaveMode.Append).parquet(s"$location")
我们有一个由 Hadoop+Hive+Spark+Dremio 组成的堆栈,因为 Spark 为单个 Hive 分区写入许多 HDFS 文件(取决于工作人员)Dremio 在查询 table 时失败,因为数量HDFS files limit is exceeded ,有什么办法可以解决这个问题,而不必手动在 spark 中设置更少的 worker 数量?(我们不想失去 spark 分布式的性能和好处)。
您可以使用 repartition
每个分区创建 1 个文件。这将确保您每个分区至少有 1 个任务,这将确保您的 spark 作业中保持足够的并行性。
df.repartition($"a", $"b", $"c", $"d", $"e").write.partitionBy("a", "b", "c", "d", "e").mode(SaveMode.Append).parquet(s"$location")