2017-07-18 80 views
0

我的問題是我有一個表是這樣的:星火拆分列值成多行

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

C1 | C2 | C3 | C4是分開的一個值|。

我的最終結果應該是這樣的:

--------- 
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