【问题标题】:Spark Dataframe loosing PartitionSpark Dataframe 丢失分区
【发布时间】:2018-01-19 15:55:36
【问题描述】:

我在读取 spark 数据帧时发现了这个奇怪的问题。我将数据帧重新分区为 50k 个分区。但是,当我读取数据帧并对其执行计数操作时,我发现当我使用 spark 2.0 时,底层 rdd 只有 2143 个分区。

所以我去了我保存重新分区数据的路径,发现

hfs -ls /repartitionedData/ | wc -l
50476

所以它在保存数据的同时创建了 50k 个分区。

但是使用 spark 2.0,

val d = spark.read.parquet("repartitionedData")
d.rdd.getNumPartitions
res4: Int = 2143

但是使用 spark 1.5,

val d = spark.read.parquet("repartitionedData")
d.rdd.partitions.length
res4: Int = 50474

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: hadoop apache-spark apache-spark-sql spark-dataframe bigdata


    【解决方案1】:

    不是你丢失数据,Spark 只是改变分区的数量。 FileSourceStrategy 将 parquet 文件组合到更少的分区中,并重新排序数据。

    这在 Spark 升级到版本 2.0 后发生了变化。你可以找到一个有点相关的错误报告here

    【讨论】:

    • 谢谢。不,当然我没有丢失数据,但是我对分区的更改感到困惑。
    猜你喜欢
    • 1970-01-01
    • 2016-03-06
    • 2017-01-15
    • 1970-01-01
    • 2020-06-06
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    相关资源
    最近更新 更多