我使用scala在spark中创建了一个数据源。我有一个case类,创建了一个RDD并将其注册为表。就像spark文档中给出的例子一样。
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.registerAsTable("people")
val teenagers = sqlContext.sql("SELECT name FROM people WHERE age >= 13 AND age <= 19")
teenagers.map(t => "Name: " + t(0)).collect().foreach(println)
但是,我无法访问hive、impala或spark-sql中的表。"显示表格"命令不显示表格。关于如何实现这一点,有什么想法吗?
谢谢!
本地创建的表和配置单元元存储之间没有连接。
要通过配置单元访问您的表,您应该以某种方式生成镶木地板文件(您的代码是可以的),将它们添加到配置单元元存储中(使用create table ...
),然后通过配置单元连接或创建配置单元上下文(org.apache.spark.sql.hive.HiveContext
)使用
简而言之,您应该区分本地使用的元数据(使用registerTempTable
创建)和持久配置单元元数据(存储在元存储中)