我已经使用 Spark SQL 注册了一个临时表,如[本节]中所述:
people.registerTempTable("people")
// I can run queries on it all right.
val teenagers = sqlContext.sql("SELECT name FROM people WHERE age >= 13 AND age <= 19")
现在我想通过 JDBC 远程访问这个表。我按照[this other section]中的描述启动 Thrift 服务器。
./sbin/start-thriftserver.sh --master spark://same-master-as-above:7077
但该表不可见。
0: jdbc:hive2://localhost:10000> show tables;
+---------+
| result |
+---------+
+---------+
No rows selected (2.216 seconds)
我猜这是因为表是“临时的”(即与SqlContext
对象的生命周期相关联)。但是如何制作非临时表?
我可以通过 Thrift 服务器查看Hive 表,但我不知道如何公开这样的 RDD。我发现一条评论表明我不能。
还是应该在我的应用程序中使用自己的 Thrift Server 运行SqlContext
?它周围的几乎所有类都是private
,并且这段代码不在 Maven Central 中(据我所知)。我应该使用HiveThriftServer2.startWithContext
吗?它是无证的@DeveloperApi
,但可能有效。