Мы пытаемся использовать ThriftServer для запроса данных из искровых темповых таблиц в искровом 2.0.0.Избегайте запуска HiveThriftServer2 с созданным контекстом программно
Во-первых, мы создали sparkSession с поддержкой поддержки Hive. В настоящее время мы начинаем ThriftServer с sqlContext так:
HiveThriftServer2.startWithContext(spark.sqlContext());
У нас есть искровой поток с зарегистрированной временной таблицы «spark_temp_table»:
StreamingQuery streamingQuery = streamedData.writeStream()
.format("memory")
.queryName("spark_temp_table")
.start();
С Билайна мы можем видеть временные таблицы (работает SHOW TABLES);
Когда мы хотим запустить вторую работу (со второй вспышкой) с таким подходом, нам нужно запустить второй ThriftServer с другим портом.
У меня есть два вопроса:
Есть ли способ, чтобы иметь один ThriftServer по одному порту, с доступом ко всем таблицам температурных в другой sparkSessions?
HiveThriftServer2.startWithContext(spark.sqlContext());
аннотируется@DeveloperApi
. Есть ли способ начать бережливый сервер с контекстом не в коде программно?
Я видел, что конфигурация--conf spark.sql.hive.thriftServer.singleSession=true
передана ThriftServer при запуске (sbin/start-thriftserver.sh), но я не понимаю, как определить это для задания. Я попытался установить это свойство конфигурации в конструкторе sparkSession, но beeline не отображал временные таблицы.
Прежде чем ответить на ваш вопрос, я буду задавать вопрос :) действительно ли вы должны начать 'ThriftServer'«программно»? – user1314742
@ user1314742 Нет, нам не нужно (и не хочу - старайтесь избегать «HiveThriftServer2.startWithContext (spark.sqlContext());'). мы на самом деле пытались запустить 'sbin/start-thriftserver.sh' с одной сессией, но без везения. В основном нам нужно получить доступ к таблицам «temp» через искровой JDBC-сервер и запросить таблицы «temp» (из разных приложений с подключением «JDBC») – VladoDemcak
Возможно ли увидеть временные таблицы, когда мы используем 'master local' вообще ? – VladoDemcak