2017-06-19 73 views
0

我有一个json文件,其中考虑到后sparkSql-Context本质上是CSV格式。火花斯卡拉:展开包装的列数据

示例数据文件:(注意这里不是每个用户院校固定数量的)

Name age  college_name 
a1  10  abc college, bcd college, xyz college 
a2  12  dsa college, iop college 

我想获得在形式上面的文件,如下所示:

Name age  college_name 
a1  10  abc college, 
a1  10  bcd college, 
a1  10  xyz college 
a2  12  dsa college, 
a2  12  iop college 

我知道它可能通过在java中创建UDF。但我想知道是否可以在Spark-scala。?

回答

0

您可以通过使用sqlContext作为

+----+---+-------------------------------------+ 
|Name|age|college_name       | 
+----+---+-------------------------------------+ 
|a1 |10 |abc college, bcd college, xyz college| 
|a2 |12 |dsa college, iop college    | 
+----+---+-------------------------------------+ 

你可以做的是使用读json数据json文件dataframe使用sqlContext API转换为

sqlContext.read.json("path to json file") 

假设你必须已经dataframeexplodesplit函数,你可以找到更多的信息functions

df.withColumn("college_name", explode(split(df("college_name"), ","))) 

你应该有你的即时还原所需的输出

+0

三江源。经过小小的改动(删除“分裂”)你的代码工作完美---> df.withColumn(“college_name”,explode(df(“college_name”))) –

+0

很高兴听到@SijaBalakrishnan和感谢接受 –