在Spark本地模式下包含包

时间:2015-06-22 15:56:11

标签: python apache-spark pytest pyspark

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

我正在使用pytestlocal模式使用Spark运行我的测试:

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

我的问题是,由于pytest没有使用spark-submit来运行我的代码,我怎样才能将我的spark-csv依赖项提供给python进程?

1 个答案:

答案 0 :(得分:4)

您可以使用配置文件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')

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