更改配对RDD [pyspark]中的密钥

时间:2019-03-30 05:45:55

标签: pyspark

我可以在一对RDD中更改密钥吗?

我已经使用sc.textFile命令从CSV文件(NAME,AGE,NATIONALITY)创建了普通的RDD。

我想创建一个以NATIONALITY作为键和(name,age)值的对RDD。

t1 = rdd.map( lamda x : (X.split(",") [2] , x))

但是t1.keys()既不显示键也不显示t1.values()

我正在使用python,您可以像在scala中一样帮助我进行创建吗?我们可以选择执行相同的操作。

1 个答案:

答案 0 :(得分:0)

您必须使用collect()t1.keys().collect()之类的RDD来打印它们。检查以下内容,我明白了。

>>> rdd= sc.parallelize([['Mike',25,'XXX'],['Sam',45,'YYY'],['Jim',26,'ZZZ']])
>>> rdd.collect()
[['Mike', 25, 'XXX'], ['Sam', 45, 'YYY'], ['Jim', 26, 'ZZZ']]
#Making Nationality as Key, and others as values
>>> t1=rdd.map(lambda x:(x[2],(x[0],x[1])))
>>> t1.collect()
[('XXX', ('Mike', 25)), ('YYY', ('Sam', 45)), ('ZZZ', ('Jim', 26))]

>>> t1.keys().collect()
['XXX', 'YYY', 'ZZZ']

>>> t1.values().collect()
[('Mike', 25), ('Sam', 45), ('Jim', 26)]