2017-01-24 8 views
0

私はスパークRDDマッピング質問

 
no1  1|3|4 
no2  4|5|6 

以下のようにテキストデータを持っていると私は、スパークRDDとScalaの言語を使用して以下のように上記のデータを変換したいです。

 
no1  1 
no1  3 
no1  4 
no2  4 
no2  5 
no2  6 

私はSparkとScalaの新機能です。そして私はこれを行う例を見つけることができません。

答えて

4

RDD APIよりも将来のスパークバージョンでAPIを重視するデータフレームとしてファイルを読み込むことをお勧めします。あなたのコメントのための

val df = Seq(("no1", "1|3|4"), ("no2", "4|5|6")).toDF("A", "B") 
// df: org.apache.spark.sql.DataFrame = [A: string, B: string] 

df.show 
+---+-----+ 
| A| B| 
+---+-----+ 
|no1|1|3|4| 
|no2|4|5|6| 
+---+-----+ 


df.withColumn("B", explode(split($"B", "\\|"))).show 
+---+---+ 
| A| B| 
+---+---+ 
|no1| 1| 
|no1| 3| 
|no1| 4| 
|no2| 4| 
|no2| 5| 
|no2| 6| 
+---+---+ 
+0

感謝:データフレームと、あなたが求めているタスクがsplitexplode機能と非常に簡単です。データtxtファイルがあり、それを入力したい場合(手動で入力するのではなく)、ユーザー入力ファイルのコマンドをどのように達成するのですか? – sclee1

+0

スパークを学習して@ sclee1。私は臆病ではありません。質問のシーケンスからあなただけのアプリケーションを[SO]に書くことは期待できません。 Sparkチュートリアルでは、ファイルからの読み上げについて説明します。 –

+0

スパークのバージョンによっては、ファイルの読みが異なります。 spark 2+の場合、 'spark.read.option(" header "、" true ")オプション(" inferSchema "、" true ")csv(あなたのファイル)'を使いやすくしています。 – Psidom

関連する問題