0

我使用 scala 在 spark 中创建了一个数据源。我有一个案例类并创建了一个 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 中的表。“显示表格”命令不显示表格。关于如何实现这一目标的任何想法?

谢谢!

4

1 回答 1

2

您在本地创建的表和配置单元元存储之间没有连接。

要通过 hive 访问您的表,您应该以某种方式生成 parquet 文件(您的代码没问题),将它们添加到 hive 元存储(with create table ...),然后通过 hive 连接使用它或创建 hive 上下文(org.apache.spark.sql.hive.HiveContext

简而言之,您应该区分本地使用的元数据(使用创建registerTempTable)和持久配置单元元数据(存储在元存储中)

于 2014-11-03T03:20:52.127 回答