pysaprk:spark submit无法执行所需的作业

e4yzc0pl  于 2021-06-27  发布在  Hive
关注(0)|答案(2)|浏览(448)

我是Pypark的新手。我正在使用以下 spark-submit 在群集中的配置单元中加载表的进程。

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

一句话:我无法使用上述方法创建配置单元表 spark-submit 代码。我的python脚本如下

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

基于stackoverflow搜索,似乎我需要修改 conf 上述定义。或者我得补充一句 Hive 元存储 hive-site.xmlspark-submit .
或者是我错过了一些我不知道的东西。
我的问题是:什么是正确的 spark-submit 我应该使用的代码?或者在上面的python代码中有什么需要修改的地方,然后运行 spark-submit ? 或者我应该使用 spark2-submit ? p、 s:我用的是PySpark2.0。
更新
我现在终于把错误归零了。这是在阅读了一些其他stackoverflow帖子之后进行的一些试验。事实上,我已经改变了 spark-submit 到下面。

  1. /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

在这里,我得到如下错误。

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

有趣的是,同样的方法在 scala 已使用。请让我知道如何解决这个问题。

6rvt4ljy

6rvt4ljy1#

  1. df_cv_filt.write.format("orc").saveAsTable("df_cv_raw").

saveastable:这将创建一个表,由于该表已经存在,除非您使用overwrite,否则它将不允许

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

或者对数据使用insertinto

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

另外,请确保您对jar文件及其对应的sql服务器的正确版本具有读取权限。

acruukt9

acruukt92#

所以我找不出背后的真正原因 spark-submit 故障(尽管提供了正确的 mssql-jdbc 司机。
然而,我发现了另一种新奇的方式来表演 spark 工作。我正在使用 $python /home/meter/myfile.py . 在 myfile.py 我补充说 properties 作为 "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver" 内部 sql_context.read 方法。
我可以看到正在创建的配置单元表。

相关问题