尝试使用两列创建数据框[Seq(),String] - Spark

时间:2018-04-12 22:06:10

标签: scala apache-spark spark-dataframe

当我在spark-shell上运行以下内容时,我得到一个数据帧:

scala> val df = Seq(Array(1,2)).toDF("a")

scala> df.show(false)
+------+
|a     |
+------+
|[1, 2]|
+------+

但是当我运行以下内容来创建一个包含两列的数据框时:

scala> val df1 = Seq(Seq(Array(1,2)),"jf").toDF("a","b")
<console>:23: error: value toDF is not a member of Seq[Object]
    val df1 = Seq(Seq(Array(1,2)),"jf").toDF("a","b")

我收到错误:

  

值toDF不是Seq [Object]的成员。

我该如何解决这个问题? toDF仅支持具有原始数据类型的序列吗?

1 个答案:

答案 0 :(得分:2)

Seq方法需要Tuple toDF才能正常工作:

val df1 = Seq((Array(1,2),"jf")).toDF("a","b")
// df1: org.apache.spark.sql.DataFrame = [a: array<int>, b: string]

df1.show
+------+---+
|     a|  b|
+------+---+
|[1, 2]| jf|
+------+---+

为更多行添加更多元组:

val df1 = Seq((Array(1,2),"jf"), (Array(2), "ab")).toDF("a","b")
// df1: org.apache.spark.sql.DataFrame = [a: array<int>, b: string]

df1.show
+------+---+
|     a|  b|
+------+---+
|[1, 2]| jf|
|   [2]| ab|
+------+---+