2016-09-24 10 views
0

私はSparkにとって少し新しく、単純なマッピングをしようとしています。
私のデータは、以下のようなものです:pysparkのリストの各行のタプルの最初の項目を取得する

RDD((0, list(tuples)), ..., (19, list(tuples)) 

私は何をしたいことは、各タプルの最初の項目をつかんされているので、最終的にはこのような何か:

RDD((0, list(first item of each tuple),..., (19, list(first item of each tuple)) 

は、誰かがどのように私を助けることができますこれを地図にするには?
私はそれを感謝します!

答えて

2

map [0]:

rdd.mapValues(lambda x: [t[0] for t in x]) 
+0

ああ、これは完全に意味があります。ありがとう@AChampion –

1

これは何か?

kvここでは「キー値」を意味し、値にはitemgetterをマッピングします。だから、あなたはタプルのリストにタプルのリストを変換するmapValuesを使用することができますmap

from operator import itemgetter 
rdd = sc.parallelize([(0, [(0,'a'), (1,'b'), (2,'c')]), (1, [(3,'x'), (5,'y'), (6,'z')])]) 
mapped = rdd.mapValues(lambda v: map(itemgetter(0), v)) 

:-)出力

mapped.collect() 
[(0, [0, 1, 2]), (1, [3, 5, 6])] 
+0

I OPがリストがタプルのリストだと言っていると思う... – AChampion

+0

これはリストの最初の項目ではなく、リスト内のすべてのタプルの最初の項目を返しますあなたが単純に 'mapValues()'を使用して値に影響を与えていることを考えれば、 – AChampion

+0

@ cricket_007あなたが言ったことを試しましたすでに各タプルの最初のタプルを私に与えています。 –

関連する問題