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

Convert RDD[(String,List[String])] to 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 中最好的方法是什么?

您首先需要将 List 的元素提取到一个元组中,然后您可以在 RDD 上使用 toDF(为此需要导入 spark 隐式转换)

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