将RDD [(String,List [String])]转换为Dataframe

时间:2018-01-31 15:04:17

标签: scala apache-spark spark-dataframe

我的RDD格式如下。即RDD [(String,List [String])]

(abc,List(a,b))
(bcb,List(a,b))

我想将其转换为Dataframe,如下所示

col1 col2 col3
abc   a    b
bcb   a    b

scala中最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

首先需要将List的元素提取到元组中,而不是toDF上使用RDD(需要为此导入火花隐式转换)

val rdd: RDD[(String, List[String])] = sc.parallelize(Seq(
  ("abc",List("a","b")),
  ("bcb",List("a","b"))
))


val df = rdd
  .map{case (str,list) => (str,list(0),list(1))}
  .toDF("col1","col2","col3")

df.show()


+----+----+----+
|col1|col2|col3|
+----+----+----+
| abc|   a|   b|
| bcb|   a|   b|
+----+----+----+