2017-07-18 77 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