【问题标题】:Unable to convert Spark RDD to Schema RDD无法将 Spark RDD 转换为 Schema RDD
【发布时间】:2015-02-10 23:18:51
【问题描述】:

我正在尝试执行 Spark 编程指南中提供的示例。 https://spark.apache.org/docs/1.1.0/sql-programming-guide.html

但我面临编译错误。 (我是 Scala 新手)

下面是我的代码:

import org.apache.spark.{SparkContext,SparkConf}
import org.apache.spark.sql._
import org.apache.spark.sql

object Temp {
    def main(args: Array[String]) {
        val sparkConf = new SparkConf().setMaster("local").setAppName("SPARK SQL example")
        val sc= new SparkContext(sparkConf)
        val sqlContext = new org.apache.spark.sql.SQLContext(sc)
        import sqlContext.createSchemaRDD
        case class Person(name: String, age: Int)
        val people = sc.textFile("examples/src/main/resources/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt))
        people.registerTempTable("people")
        val teenagers = sqlContext.sql("SELECT name FROM people WHERE age >= 13 AND age <= 19")
        teenagers.map(t => "Name: " + t(0)).collect().foreach(println)
    }
}

我在people.registerTempTable("people") 行遇到编译错误No TypeTag available for Person

如何解决这个错误?

【问题讨论】:

标签: scala apache-spark apache-spark-sql


【解决方案1】:

失败是因为 Person 类是在函数内部定义的,因此 Scala 编译器不会为该类创建 TypeTag。正如 Paul 建议的那样,您可以将其从函数中移到顶层。

我补充一下,有一个 JIRA 可以放宽这个限制:https://issues.apache.org/jira/browse/SPARK-4842

【讨论】:

    猜你喜欢
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多