![](/img/trans.png)
[英]pyspark using one task for mapPartitions when converting rdd to dataframe
[英]rdd(row) remove duplicates within a partition using mapPartitions
我有一個 DF,它已經在所有列上進行了分區和排序。 現在我只想刪除每個分區中的重復項。 (重復不會跨越分區)。 我不能使用df.distinct()
,因為它會導致洗牌,我想避免洗牌。 我將 df 轉換為 rdd 並使用mapPartitions
。 我得到了 output 但它運行得非常慢。 如何優化這個? 下面是我的代碼。
def unique_values(iterable):
it = iter(iterable)
previous = next(it)
yield previous
for item in it:
if item != previous:
previous = item
yield item
rdd = df.rdd.mapPartitions(unique_values)
df = ..converting rdd back to df...
Spark 版本:EMR 5.28 上的 2.4.4
讓我們假設 dataframe df
已經在所有列上進行了分區和排序。
val partitionDF = df.withColumn("partitionId", spark_partition_id())
partitionId
和all_columns
以在每個分區中變得不同partitionDF.groupBy(partitionDF.columns.map(col): _*).count()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.