如何从 pyspark 中的本地罐子中导入包装?



我正在使用pyspark对csv文件进行一些工作,因此我需要从spark-csv_2.10-1.4.0导入包.jar从 https://repo1.maven.org/maven2/com/databricks/spark-csv_2.11/1.4.0/spark-csv_2.11-1.4.0.jar 下载

由于代理问题,我将jar下载到本地。

谁能告诉我引用本地罐子的正确用法是什么:

这是我使用的代码:

pyspark --jars /home/rx52019/data/spark-csv_2.10-1.4.0.jar 

但是,当我运行时,它会像预期的那样将我带到 pyspark shell:

df = sqlContext.read.format('com.databricks.spark.csv').options(header='true',inferschema='true').load('hdfs://dev-icg/user/spark/routes.dat')

路由.dat已上传到HDFS,hdfs://dev-icg/user/spark/routes.dat

它给了我错误:

:java.lang。NoClassDefFoundErrororg/apache/commons/csv/CSVFormat

如果我运行:

df = sqlContext.read.format('com.databricks.spark.csv').options(header='true',inferschema='true').load('routes.dat')

我收到此错误:

py4j.protocol.Py4JJavaError:调用 o72.load 时出错。 : java.lang.NoClassDefFoundError:无法初始化类 com.databricks.spark.csv.package$

谁能帮我解决?谢谢。任何线索都值得赞赏。

正确的方法是添加选项(例如,如果您正在启动火花外壳(

spark-shell --packages com.databricks:spark-csv_2.11:1.4.0 --driver-class-path /path/to/csvfilejar.jar

我没有直接使用数据砖 csvjar,但我使用 netezza 连接器来激发他们提到使用此选项的地方

https://github.com/SparkTC/spark-netezza

最新更新