2016-09-30 2 views
0

Я хочу бросить стол улей через sparksql.sparksql drop hive table

В кластере с hadoop 2.6, улей 2.0, искры 1.6 и искры 2.0 установлены. Я попробовал следующий код в оболочке pyspark и исправить отправку задания с обеих версий.

sqlContext.sql('drop table test') //spark 1.6 
spark.sql('drop table test')  //spark 2.0 

Оба код отлично работает в pyspak скорлупе, я могу видеть из улья кли что тест таблица больше не существует.

Однако, если код был в файле python и позже отправлен в кластер с использованием spark-submit, код не вступил в силу.

искра 2,0 даже дала ошибке о

pyspark.sql.utils.AnalysisException: u"Table to drop '`try`' does not exist;" 

Я скопировал ульи-site.xml в каталог конфа в искре.

Что было бы правильным способом сбросить таблицу улей через sparksql?

Update:

Я попытался сравнил искровую среду между искровой скорлупой и работой я submiited используя следующий код

spark-submit --master yarn --deploy-mode cluster try_spark_sql.py 

В среде с искровой оболочкой, я могу видеть искры. sql.catalogImplementation установлен в улей

В работе, представленной с использованием вышеуказанного кода. Среда не содержит spark.sql.catalogImplementation Я попытался установить его, используя следующий код:

spark = SparkSession.builder.appName("PythonSQL").config("spark.sql.catalogImplementation","hive"). 

Но это не оказывает никакого влияния на окружающую среду.

Один из способов я нашел, посылающее задание, используя клиента режима вместо кластера режим. Затем таблица улей может быть успешно удалена.

+0

Вопрос: используете ли вы контекст sqlContext в своем сценарии искра-отправки? –

+0

, конечно, я не добавил эту часть кода. Исходный код инициализируется как обычно, и используя sqllContxt.sql, можно успешно прочитать файл .orc. –

ответ

1

Когда вы используете оболочку PySpark, Spark имеет встроенную поддержку Hive, реализация SQLContext по умолчанию (доступная как sqlContext) - это HiveContext.

В вашем приложении, если вы используете простой SQLContext, который не предоставляет возможности Hive.

Пожалуйста, как показано ниже, он должен работать.

from pyspark.sql import HiveContext 
sqlContext = HiveContext(sc) 
sqlContext.sql('drop table test') 
+0

Извините за поздний ответ, так как я был в отпуске. Я перепровечил свой код и нашел 'sqlContext = HiveContext (sc)' уже там, хотя у меня не было 'from pyspark.sql import HiveContext'. После добавления строки кода искры все еще жалуются на 'pyspark.sql.utils.AnalysisException: u «Отбрасывать« try' »не существует;». Возможно, это связано с тем, что кластер настроен с использованием искры 2.0. –

+0

Но теперь я нашел работу по работе. Отправьте задание, используя '--mode client' вместо' --mode cluster', сможет успешно удалить таблицу. –