我正在用python为我的Spark代码编写一些单元测试.我的代码取决于spark-csv.在生产中,我使用spark-submit –packages com.databricks:spark-csv_2.10:1.0.3提交我的python脚本.
我正在使用pytest在本地模式下使用Spark运行测试:
conf = SparkConf().setAppName('myapp').setMaster('local[1]')
sc = SparkContext(conf=conf)
我的问题是,由于pytest没有使用spark-submit来运行我的代码,我如何才能将我的spark-csv依赖关系提供给python进程?
解决方法:
您可以使用配置文件spark.driver.extraClassPath来解决问题.
Spark-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运行时甚至不需要package标志.
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.您可以在mvn-site上构建或下载spark-csv jar.