python - 在 Spark 本地模式下包含包

标签 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进程的依赖?

最佳答案

您可以使用配置文件 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您可以从 mvn-site 构建或下载 jar。

关于python - 在 Spark 本地模式下包含包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30984516/

相关文章:

python - Allure serve 命令实时更新并利用高级功能(趋势、历史等)

python - 通过 macports 安装 Py.test 时出错

python - 圆上的非极大值抑制

python - Bluehost:Python/CGI shebang 需要指向我安装的 Python?

elasticsearch - elasticsearch-hadoop如何基于不同的ES集群创建两个RDD

amazon-web-services - 如何使 Pyspark 脚本在 Amazon EMR 上运行以识别 boto3 模块?它说找不到模块

pytest - 在 pytest 中收集时使用固定装置

python - 任务计划程序中的程序未正确运行

Python:随机系统时间种子

apache-spark - 为什么 Spark 计数 Action 分三个阶段执行