【问题标题】:Trying to create dataframe with two columns [Seq(), String] - Spark尝试使用两列 [Seq(), String] 创建数据框 - Spark
【发布时间】:2018-04-13 06:27:35
【问题描述】:

当我在 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 是否仅支持原始数据类型的序列?

【问题讨论】:

    标签: scala apache-spark spark-dataframe


    【解决方案1】:

    您需要 SeqTuple 才能使 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|
    +------+---+
    

    【讨论】:

    • 感谢它的帮助!所以当我创建一个 Sequence(Array[Int], String) 时我错了,一个元组支持不同的种类,如果我是正确的,一个序列不支持。
    • 我遇到了同样的错误。 “值 toDF 不是 Seq[Array[String]] 的成员”有什么建议吗?
    • 迟到但import spark.implicits._
    猜你喜欢
    • 1970-01-01
    • 2023-01-24
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2017-12-29
    • 2021-01-16
    相关资源
    最近更新 更多