2017-07-18 11 views
0

私の問題は、私はこのようなテーブル持っている複数の行に列値を分割:| C2 | C3 |スパークが

------------------------ 
A B C 
------------------------ 
a1 b2 c1|c2|c3|c4 

C1を| C4は区切られた1つの値です。

私の最終的な結果は次のようになります。

--------- 
A B C 
--------- 
a1 b1 c1 
a1 b1 c2 
a1 b1 c3 
a1 b1 c4 

を私はこれを行うにはどうすればよいですか?

おかげスパーク機能を使用して

答えて

1

これはあなたが何ができるかで、パイプでsplit文字列とexplodeデータ

import org.apache.spark.sql.functions._ 
import spark.implicits._ 

val df = Seq(("a1", "b1", "c1|c2|c3|c4")).toDF("A", "B", "C") 

df.withColumn("C", explode(split($"C", "\\|"))).show 

出力:このことができます

+---+---+---+ 
| A| B| C| 
+---+---+---+ 
| a1| b1| c1| 
| a1| b1| c2| 
| a1| b1| c3| 
| a1| b1| c4| 
+---+---+---+ 

願っています!

+0

それは働いていますが、c11をc、1,1 ... – Anna

+0

私は答えを更新します:) –

+0

私はそれを理解しました、 "\\ |" :)他のすべてが完璧です、ありがとう! – Anna