PySaprk: spark-submit не может выполнить желаемую работу - PullRequest
2 голосов
/ 29 марта 2019

Я новичок в PySpark.Я использую следующий процесс spark-submit для загрузки таблицы в Hive в кластере.

/usr/hdp/2.5.0.0-1245/spark2/bin/spark-submit --driver-class-path /path/to/driver/sqljdbc4-3.0.jar --jars /path/to/driver/sqljdbc4-3.0.jar --deploy-mode cluster --master yarn /home/meter/myfile.py

Всякий раз, когда я запускаю это, я получаю множество ошибок.Как и

1. pyspark.sql.utils.analysisexception u'path file:/root/spark-warehouse/table_name already exist
2. Couldn't find driver for com.microsoft.sqljdbc # something like this
3. Some other staging related errors

Итог: я не могу создать таблицу Hive, используя приведенный выше код spark-submit.Мой скрипт на Python выглядит следующим образом:

from pyspark import SparkConf,SparkContext
from pyspark.sql import HiveContext,SQLContext
conf = SparkConf().setAppName("myapp")
sc = SparkContext(conf=conf)
sql_cntx = SQLContext(sc)
df_curr_volt = sql_cntx.read.format("jdbc").options(url="url",dbtable="table").load()
hc = HiveContext(sc)
df_cv_filt.write.format("orc").saveAsTable("df_cv_raw")

Основываясь на поиске в стеке, кажется, что мне нужно изменить определение conf, приведенное выше.Или я должен добавить Hive metastore hive-site.xml в spark-submit.

Или, может быть, я упускаю что-то, что мне не известно.

Мой вопрос: какой правильный spark-submit код я должен использовать?Или мне нужно что-то изменить в приведенном выше коде Python, а затем запустить spark-submit?Или мне использовать spark2-submit?PS: я использую PySpark 2.0.

Обновление

Я наконец-то обнулил ошибку сейчас.Это после некоторых испытаний после прочтения нескольких других сообщений stackoverflowInfact, я изменил spark-submit на следующее.

/usr/hdp...bin/spark-submit --driver-class /path/to/sqljdbc4-3.0.jar --jars /path /to/ sqljdbc4-3.0.jar --master yarn /path/to/.py 

И опубликовать это, я получаю ошибку следующим образом.

staging error.could not find registered driver com.microsoft.sqlserver.jdbc.SQLServerDriver #similar to this line.

Интересно, что тот же метод работает нормальнокогда scala используется.Пожалуйста, дайте мне знать, как справиться с этим сейчас.

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Так что я не смог отследить фактическую причину сбоя spark-submit (несмотря на предоставление правильного mssql-jdbc драйвера.

Однако я наткнулся на другой новый способ выполнения заданий spark.используя $python /home/meter/myfile.py. В myfile.py я добавил properties как "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver" в методе sql_context.read.

Я вижу, как создаются таблицы Hive.

1 голос
/ 29 марта 2019
df_cv_filt.write.format("orc").saveAsTable("df_cv_raw").

saveAsTable: это создаст таблицу, и поскольку таблица уже существует, она не разрешит, если вы не используете перезапись

df_cv_filt.write.mode('overwrite').format("orc").saveAsTable("df_cv_raw")

или не используете insertInto со своими данными

data.write.mode("append").insertInto("my_table").

Также убедитесь, что у вас есть доступ на чтение к файлу JAR и его правильной версии, соответствующей sql-серверу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...