2017-12-01 23 views
0

RDDのキーと値のペアの列[2]の値を文字列から整数に変換しようとしているので、それらを合計して平均を計算できます。 KVPのRDD値をPySparkの整数に変換する

私は列には[2]に自動的にマッピングフェーズの間の整数として表示していしようとしましたが、私はエラーを取得しています、「TypeError例外: 『タイプ』オブジェクトが属性を持っていない 『のGetItem』」

textfile = sc.textFile("hdfs://...csv") 
test = textfile.map(lambda x: (x.split(",")[1], x.split(",")(int[2])) 

は何がありますPySpark RDDで列[2]の値を整数として変換/マップする正しい方法は?

+2

あなたのエラーが原因で 'int型のものであり、容易に計算することができる[2]' - あなたは第三項目を取得しようとしています意味のないデータ型から(これはエラーメッセージのことです)。 'test = textfile.map(lambda x:(x.split("、 ")[1]、int(x.split("、 ")[2]))'つまり、 2番目の要素は 'x.split("、 ")'を 'int'にします。また、Pythonは0でインデックス付けされているので、コードは' len(x.split( "、"))> = 3' – pault

+0

完璧に働いて、ありがとう! – Learner

答えて

0

コメントに指摘されているように、問題はインデックス作成です。しかし、null値をチェックする必要があり、タプルをすぐに使用できることを理解しやすく使いやすくすることを追加しました。

私は、次の操作を行ってお勧めします:

test = textfile.map(lambda x: x.split(',')) 
remove_nulls = test.filter(lambda (x,y): y is not None) 
with_ints = remove_nulls.map(lambda (x,y): (x,int(y))) 

今、あなたは平均