[このセクション]で説明されているように、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 を介してこのテーブルにリモートでアクセスしたいと考えています。[この別のセクション]で説明されているように、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
いませんが、機能する可能性があります。