gpt4 book ai didi

python - 在 pyspark 代码中加载外部库

转载 作者:太空宇宙 更新时间:2023-11-04 03:18:49 25 4
gpt4 key购买 nike

我有一个在本地模式下使用的 spark 集群。我想用 databricks 外部库 spark.csv 读取 csv。我按如下方式启动我的应用程序:

import os
import sys

os.environ["SPARK_HOME"] = "/home/mebuddy/Programs/spark-1.6.0-bin-hadoop2.6"

spark_home = os.environ.get('SPARK_HOME', None)
sys.path.insert(0, spark_home + "/python")
sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.2.1-src.zip'))

from pyspark import SparkContext, SparkConf, SQLContext

try:
sc
except NameError:
print('initializing SparkContext...')
sc=SparkContext()
sq = SQLContext(sc)
df = sq.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load("/my/path/to/my/file.csv")

当我运行它时,出现以下错误:

java.lang.ClassNotFoundException: Failed to load class for data source: com.databricks.spark.csv.

我的问题:如何在我的 python 代码中加载 databricks.spark.csv 库。我不想从实异常(exception)部(使用 --packages)加载它。

我尝试添加以下行,但没有成功:

os.environ["SPARK_CLASSPATH"] = '/home/mebuddy/Programs/spark_lib/spark-csv_2.11-1.3.0.jar'

最佳答案

如果您从头开始创建 SparkContext,您可以设置 PYSPARK_SUBMIT_ARGS before SparkContext 初始化:

os.environ["PYSPARK_SUBMIT_ARGS"] = (
"--packages com.databricks:spark-csv_2.11:1.3.0 pyspark-shell"
)

sc = SparkContext()

如果出于某种原因您希望 SparkContext 已经初始化,正如您的代码所建议的那样,这将不起作用。在本地模式下,您可以尝试使用 Py4J 网关和 URLClassLoader,但它看起来不是一个好主意,并且不会在集群模式下工作。

关于python - 在 pyspark 代码中加载外部库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35346567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com