我们有一个由Hadoop+Hive+Spark+Dremio组成的堆栈,由于Spark为单个Hive分区(取决于工作进程)写入许多HDFS文件,所以在查询表时,由于HDFS文件的数量超过了限制,Dremio会失败,有没有办法解决这个问题,而不必手动在spark中设置更少的工作进程?(我们不想失去spark分布式性能和好处)。
发布于 2019-11-06 06:47:10
您可以使用repartition,它将为每个分区创建一个文件。这将确保每个分区至少有一个任务,这将确保在spark作业中维护足够的并行性。
df.repartition($"a", $"b", $"c", $"d", $"e").write.partitionBy("a", "b", "c", "d", "e").mode(SaveMode.Append).parquet(s"$location")https://stackoverflow.com/questions/58719052
复制相似问题