小编Vin*_*dak的帖子

仅当在主方法外部定义案例类以创建 Dataset[case class] 或 Dataframe[case class] 时才起作用

这是有效的。

object FilesToDFDS {
    case class Student(id: Int, name: String, dept:String)
    def main(args: Array[String]): Unit = {
        val ss = SparkSession.builder().appName("local").master("local[*]").getOrCreate()
        import ss.implicits._

        val path = "data.txt"
        val rdd = ss.sparkContext.textFile(path).map(x => x.split(" ")).map(x => Student(x(0).toInt,x(1),x(2)))
        val df = ss.read.format("csv").option("delimiter", " ").load(path).map(x => Student(x.getString(0).toInt ,x.getString(1),x.getString(2)))
        val ds = ss.read.textFile(path).map(x => x.split(" ")).map(x => Student(x(0).toInt,x(1),x(2)))

        val rddToDF = ss.sqlContext.createDataFrame(rdd)

    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果 case 类移动到 main 内部,df则会ds出现编译错误。

Unable to find encoder for type stored in a Dataset. Primitive …
Run Code Online (Sandbox Code Playgroud)

scala dataframe apache-spark

5
推荐指数
1
解决办法
426
查看次数

标签 统计

apache-spark ×1

dataframe ×1

scala ×1