Я установил и настроил Spark на пряже вместе с интеграцией Spark с таблицами кустов . Используя spark-shell
/ pyspark
, я также следую простому учебнику и достигаю создания таблицы Hive, загрузки данных и правильного выбора.
Затем я перехожу к следующему шагу, настройка Hive on Spark . Используя hive
/ beeline
, я также добиваюсь создания таблицы Hive, загрузки данных и правильного выбора. Улей выполнен на YARN / Spark правильно. Как я знаю, что это работает? Оболочка hive
отображает следующее: -
hive> select sum(col1) from test_table;
....
Query Hive on Spark job[0] stages: [0, 1]
Spark job[0] status = RUNNING
--------------------------------------------------------------------------------------
STAGES ATTEMPT STATUS TOTAL COMPLETED RUNNING PENDING FAILED
--------------------------------------------------------------------------------------
Stage-0 ........ 0 FINISHED 3 3 0 0 0
Stage-1 ........ 0 FINISHED 1 1 0 0 0
--------------------------------------------------------------------------------------
STAGES: 02/02 [==========================>>] 100% ELAPSED TIME: 55.26 s
--------------------------------------------------------------------------------------
Spark job[0] finished successfully in 55.26 second(s)
OK
6
Time taken: 99.165 seconds, Fetched: 1 row(s)
Пользовательский интерфейс менеджера ресурсов также отображает приложение RUNNING
как Hive on Spark (sessionId = ....)
, и я могу посетить ApplicationMaster
для просмотра подробного запроса как ну.
Текущий шаг, которого я пока не могу достичь, - это интеграция pyspark
/ SparkSQL
в Hive on Spark
.
Что я пытаюсь.
- Редактировать
$SPARK_HOME/conf/hive-site.xml
как hive.execution.engine=spark
.
<property>
<name>hive.execution.engine</name>
<value>spark</value>
<description>
Expects one of [mr, tez, spark].
</description>
</property>
Войдите в pyspark с помощью
bin/pyspark
и отметьте
hive.execution.engine
.
>>> spark.sql("set spark.master").show()
+------------+-----+
| key|value|
+------------+-----+
|spark.master| yarn|
+------------+-----+
>>> spark.sql("set spark.submit.deployMode").show()
+--------------------+------+
| key| value|
+--------------------+------+
|spark.submit.depl...|client|
+--------------------+------+
>>> spark.sql("set hive.execution.engine").show()
+--------------------+-----------+
| key| value|
+--------------------+-----------+
|hive.execution.en...|<undefined>|
+--------------------+-----------+
Поскольку никакого значения для
hive.execution.engine
нет (весьма удивительно! Я установил сайт улья. xml!), Я решил установить его вручную следующим образом: -
>>> spark.sql("set hive.execution.engine=spark")
>>> spark.sql("set hive.execution.engine").show()
+--------------------+-----+
| key|value|
+--------------------+-----+
|hive.execution.en...|spark|
+--------------------+-----+
Выберите данные из Hive с помощью Spark SQL
>>> spark.sql("select sum(col1) from test_table").show()
+---------+
|sum(col1)|
+---------+
| 6|
+---------+
Даже результат отображается, но приложение не отображается в диспетчере ресурсов. Я понимаю, что
SparkSQL
не использует
Hive On Spark
. Я понятия не имею об этом.
Вопрос в том,
- Как я могу заставить
pyspark
/ SparkSQL
использовать Hive on Spark
? - Подходит ли так, чтобы ускориться и отойти от
mr
механизма исполнения? - Могу ли я смешивать и сочетать с неправильным ингредиентом? или это невозможно?