我是Pypark的新手。我正在使用以下 spark-submit
在群集中的配置单元中加载表的进程。
/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
一句话:我无法使用上述方法创建配置单元表 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")
基于stackoverflow搜索,似乎我需要修改 conf
上述定义。或者我得补充一句 Hive
元存储 hive-site.xml
在 spark-submit
.
或者是我错过了一些我不知道的东西。
我的问题是:什么是正确的 spark-submit
我应该使用的代码?或者在上面的python代码中有什么需要修改的地方,然后运行 spark-submit
? 或者我应该使用 spark2-submit
? p、 s:我用的是PySpark2.0。
更新
我现在终于把错误归零了。这是在阅读了一些其他stackoverflow帖子之后进行的一些试验。事实上,我已经改变了 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条答案
按热度按时间6rvt4ljy1#
saveastable:这将创建一个表,由于该表已经存在,除非您使用overwrite,否则它将不允许
或者对数据使用insertinto
另外,请确保您对jar文件及其对应的sql服务器的正确版本具有读取权限。
acruukt92#
所以我找不出背后的真正原因
spark-submit
故障(尽管提供了正确的mssql-jdbc
司机。然而,我发现了另一种新奇的方式来表演
spark
工作。我正在使用$python /home/meter/myfile.py
. 在myfile.py
我补充说properties
作为"driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
内部sql_context.read
方法。我可以看到正在创建的配置单元表。