小编Jes*_*sse的帖子

dropDuplicates() 不适用于 pyspark 但适用于 Spark java

我有一个转换,其唯一目的是删除重复项。使用PySpark 2.x时,生成的输出会删除一些重复项,但不是全部。使用Apache Spark Java 2.x时,结果输出符合预期,并且删除了所有重复项。

我目前正在 YARN 上运行 Spark。我的数据集大约有 1.25 亿行 x 200 列。预计某些列包含空值。对于我的用例,我确实有纯重复项(其原因超出了范围)。到目前为止,我已经尝试过:

  1. dropDuplicates(df.columns) / dropDuplicates(), PySpark -> 删除一些但不是全部重复项
  2. unique(),PySpark -> 删除一些但不是全部重复项,行数与 1 不同。
  3. dropDuplicates([primary_key_I_created]),PySpark -> 有效
  4. dropDuplicates(dataset.columns()),Apache Spark Java -> 有效

我检查了物理计划,方法 1 和方法 4 都生成了相同的计划。它们大致如下:

+-HashAggregate(keys=[column_1, column_2, .... 198 more fields], functions=[], output=[column_1, column_2, ... 198 more fields]
  +-Exchange hashpartitioning(column_1, column_2, ... 198 more fields)
    +-HashAggregate(keys=[column_1, column_2, .... 198 more fields], functions=[], output=[column_1, column_2, ... 198 more fields]
      +-FileScan parquet .... …
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql pyspark

5
推荐指数
0
解决办法
1286
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

pyspark ×1