在 Spark 本地模式下包含包

Posted

技术标签:

【中文标题】在 Spark 本地模式下包含包【英文标题】:Include package in Spark local mode 【发布时间】:2015-06-22 15:56:11 【问题描述】:

我正在用 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 进程?

【问题讨论】:

【参考方案1】:

您可以使用配置文件 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 运行时甚至不需要包标志。

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 下载。

【讨论】:

以上是关于在 Spark 本地模式下包含包的主要内容,如果未能解决你的问题,请参考以下文章

Spark Standalone、YARN 和本地模式有啥区别?

3.spark运行模式

Spark Executor 以本地或独立模式登录

避免在包开发模式下重新启动 Jupyter 内核?

Flink的local模式部署安装

spark必须要hadoop吗