2017-03-24 14 views
2

私は4列のデータを持つデータセットを持っています。Apache Spark(pyspark)のデータセットから特定の列を取得するにはどうすればよいですか?

例:pysparkを使用して

a b c d 
1, 2, 3, 4 

...

、どのように私は、列aだけbのためのデータを取得することができますか?私はスパークするために新しいです:

dataset = data_raw.filter(lambda line: line != dataset_header) \ 
.map(lambda line: line.split(", ", maxsplit=2)).take(1) 

しかし、これは私に必要な目的を与えるようではありません。私が望むのは、列がabで、残りのデータセットを破棄することだけです。どんな助けでも大歓迎です。

答えて

1

私は、そのコードが、あなたが期待していたことが働いているとは確信していません。少し明確にするためsplitdocumentationを参照してください。あなたが唯一の最初の2つのインスタンスに分割すると、あなたが「」三つの要素で終わる見ることができるように

my_string = '1, 2, 3, 4' 
result = my_string.split(', ', maxsplit=2) 

print(result) 
['1', '2', '3, 4'] 

:ここでは簡単なexapmleです。

少し詳細はさておき、あなたがしようとしていること:あなたのコメントに応えて

dataset = data_raw.filter(lambda line: line != dataset_header) \ 
    .map(lambda line: line.split(', ')[:2]) 

をEDIT

、私はちょうどあなたの例のデータでスパークRDDをロードしてテストしました。以下は結果のイメージです。あなたのデータはCSV形式であることを述べたように、あなただけのSparkSession.read.csvを使用することができます見て

pyspark map example

EDIT2

。あなたはデータフレームを持っていたら、あなたは自分の列を選択することができます。

DF [「A」、「B」]ショー(5)

は最初の5行が表示されるでしょう。

enter image description here

+0

こんにちは@Grr私はちょうどあなたの提案を試みただけで、すべてのデータを印刷します。 – xn139

+0

@ xn139これで私のテストの画像をアップロードしました。 RDDやDFなどを使用して、データをどのように読み込んでいるかについていくつか詳細を述べることができれば、助けが簡単になります。 – Grr

+0

こんにちは@Grr、私のデータはCSVファイルです - CSVファイルを並列化しようとすると次のようになります: 'TypeError: 'RDD'オブジェクトは反復不可' CSVファイルを並列化して上記の操作を実行できますか? – xn139

1

私はあなたがツアーデータセットのCSVリーダーを使うべきだと思う

dataset.select('a','b').show() 

..あなたが唯一の2つの列を選択するためのSelect方法を試してみてもらいます。

sc.textFile("file.csv") \ 
.map(lambda line: line.split(",")) \ 
.filter(lambda line: len(line)<=1) \ 
.collect() 
関連する問題