簡體   English   中英

RDD中每個鍵的PySpark不同列表

[英]PySpark Distinct List of Each of the Keys from an RDD

我敢肯定這很簡單,但是我仍然遇到問題。 我有帶有鍵值對的RDD。 我只需要一個鍵列表。 我將分享代碼和示例。 先感謝您!

RDD示例

>>> rdd4.take(3)
[[(u'11394071', 1), (u'11052103', 1), (u'11052101', 1)], [(u'11847272', 10), (u'999999', 1), (u'11847272', 10)], [(u'af1lowprm1704', 5), (u'am1prm17', 2), (u'af1highprm1704', 2)]]

嘗試/沒有工作

rdd4.distinct().keys()
rdd4.map(lambda x: tuple(sorted(x))).keys().distinct()

[(u'10972402', 1), (u'10716707', 1), (u'11165362', 1)]

首選結構

[u'11394071', u'11052101', '999999', u'11847272', u'am1prm17', u'af1highprm1704']

您可以例如:

rdd.flatMap(lambda x: x).keys().distinct()

您可以使用flatMap從內部元組獲取鍵,然后在結果RDD上調用distinct

rdd = sc.parallelize([[(u'11394071', 1), (u'11052103', 1), (u'11052101', 1)], [(u'11847272', 10), (u'999999', 1), (u'11847272', 10)], [(u'af1lowprm1704', 5), (u'am1prm17', 2), (u'af1highprm1704', 2)]])

rdd.flatMap(lambda x: [k for k, _ in x]).distinct().collect()
# [u'999999', u'11394071', u'11847272', u'af1highprm1704', u'11052101', u'af1lowprm1704', u'am1prm17', u'11052103']

如果只需要鍵列中的不同值,並且有一個數據框,則可以執行以下操作:

df.select('k').distinct()

如果只有RDD,則可以

rdd.map(lambda r: r[0]).distinct

假設關鍵是您的左欄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM