首页 > 解决方案 > 在 Apache Spark 中使用 toDF 方法创建乱序数据帧

问题描述

我使用 Spark 2.4.4 并尝试获取下面给出的数据框。

val spark =  SparkSession
            .builder
            .master("local[*]")
            .appName("App")
            .getOrCreate 

import spark.sqlContext.implicits._  
import spark.implicits._

val justNow = spark.sparkContext.parallelize( 
        Seq(Row("1", "One")
           ,Row("2", "Tow")
        )
).toDF

我在 main 方法中定义了上面的代码。但是我收到一个错误,即 toDF 不是 RDD 中定义的函数。我参考了 stackoverflow 上的其他帖子,以包含显式以消除错误。我仍然得到它。

error: value toDF is not a member of org.apache.spark.rdd.RDD[org.apache.spark.sql.Row]
possible cause: maybe a semicolon is missing before `value toDF'?
Error occurred in an application involving default arguments. 

有人可以帮忙吗。谢谢!

标签: scalaapache-sparkapache-spark-sqlrdd

解决方案


您可以改用该createDataFrame方法。toDF 不适合 RDD of Rows。

import org.apache.spark.sql.types._
import org.apache.spark.sql.Row

val schema = StructType(Seq(StructField("col1",StringType), StructField("col2",StringType)))
val df = spark.createDataFrame(sc.parallelize(Seq(Row("1", "One"),Row("2", "Tow"))), schema)

df.show
+----+----+
|col1|col2|
+----+----+
|   1| One|
|   2| Tow|
+----+----+

推荐阅读