在 Spark 本地模式下包含包

Include package in Spark local mode

我正在 python 中为我的 Spark 代码编写一些单元测试。我的代码依赖于 spark-csv。在生产中,我使用 spark-submit --packages com.databricks:spark-csv_2.10:1.0.3 提交我的 python 脚本。

我正在使用 pytest 运行 我在 local 模式下使用 Spark 进行的测试:

conf = SparkConf().setAppName('myapp').setMaster('local[1]')
sc = SparkContext(conf=conf)

我的问题是,由于 pytest 没有使用 spark-submit 到 运行 我的代码,我如何才能提供我的 spark-csv 对 python 过程?

您可以使用配置文件 spark.driver.extraClassPath 来解决问题。 火花-default.conf

并添加 属性

 spark.driver.extraClassPath /Volumes/work/bigdata/CHD5.4/spark-1.4.0-bin-hadoop2.6/lib/spark-csv_2.11-1.1.0.jar:/Volumes/work/bigdata/CHD5.4/spark-1.4.0-bin-hadoop2.6/lib/commons-csv-1.1.jar

设置完上面的内容后,你甚至不需要包标记,而 运行 来自 shell。

sqlContext = SQLContext(sc)
    df = sqlContext.read.format('com.databricks.spark.csv').options(header='false').load(BASE_DATA_PATH + '/ssi.csv')

这两个 jar 都很重要,因为 spark-csv 依赖于 commons-csv apache jar。 spark-csv jar,您可以从 mvn-site 构建或下载。