Я зарегистрировал временную таблицу с 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 Server, как описано в [этот другой раздел].
./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
). Но как мне делать не временные таблицы?
Я вижу таблицы Hive через Thrift Server, но я не вижу, как я мог бы разоблачить RDD, как это. Я нашел комментарий, который предполагает, что я не могу.
Или я должен запустить Thrift Server в своем приложении со своим собственным SqlContext
? Почти все классы вокруг него private
, и этот код не находится в Maven Central (насколько я вижу). Я должен использовать HiveThriftServer2.startWithContext
? Он недокументирован и @DeveloperApi
, но может работать.