【发布时间】:2021-03-25 16:25:08
【问题描述】:
我正在从 HDFS 读取一组 10,000 个 10 TB 累积大小的 parquet 文件,并使用以下代码以分区方式将其写回 HDFS
spark.read.orc("HDFS_LOC").repartition(col("x")).write.partitionBy("x").orc("HDFS_LOC_1")
我正在使用
spark.sql.shuffle.partitions=8000
我看到 spark 已将 5000 个不同的 "x" 分区写入 HDFS(HDFS_LOC_1) 。在整个过程中如何使用“8000”的随机分区。我看到在“x”的所有分区中只有 15,000 个文件被写入。这是否意味着spark尝试在“X”的每个分区创建8000个文件,并且在写入期间发现没有足够的数据在每个分区写入8000个文件并最终写入更少的文件?你能帮我理解一下吗?
【问题讨论】:
-
Spark 从 HDFS 读取数据时,生成的 DF 中创建的默认分区数取决于用于读取该文件的 Hadoop 输入格式创建的输入拆分。
标签: scala apache-spark