【问题标题】:Inconsistent Persistence of DataFrames in Spark 1.5Spark 1.5 中数据帧的持久性不一致
【发布时间】:2016-01-26 05:39:15
【问题描述】:

我们最近从 1.4.1 切换到 Spark 1.5.0,并注意到在持久化 DataFrame 中存在一些不一致的行为。

df1 = sqlContext.read.parquet("df1.parquet")
df1.count()

161,100,982

df2 = sqlContext.read.parquet("df2.parquet")
df2.count()

67,498,706

join_df = df1.join(df2, "id")
join_df.count()

160,608,147

join_df.write.parquet("join.parquet")
join_parquet = sqlContext.read.parquet("join.parquet")
join_parquet.count()

67,698,892

join_df.write.json("join.json")
join_json = sqlContext.read.parquet("join.json")
join_json.count()

67,695,663

第一个主要问题是join DataFrame的计数和持久化的join DataFrame之间存在数量级的差异。其次,将相同的 DataFrame 持久化为两种不同的格式会产生不同的结果。

有人知道这里会发生什么吗?

【问题讨论】:

  • 我认为路径不匹配是错字?
  • 你没有使用相同的路径
  • 是的,路径不匹配是错别字

标签: apache-spark parquet


【解决方案1】:

我在 Spark 1.6.1 中遇到过类似的问题:

当我从单个 RDD 创建 2 个不同的 DataFrame 并坚持到 2 个 Parquet 时,我发现 parquet 中的行不一样。

后来我发现在这个 RDD 的操作管道定义中的某个地方,我有 rdd.reduceByKey() 操作,它为多次调用返回了不确定的结果。

显然,对于每个 DataFrame,调用了一个不同的 reduceByKey(),并导致某些行的细微差别。

你的情况可能类似。

【讨论】:

    猜你喜欢
    • 2021-04-14
    • 2021-04-15
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多