python - 在 Jupyter 笔记本中使用 PySpark 时如何包含外部 Spark 库

标签 python apache-spark pyspark jupyter-notebook jupyter

我正在尝试运行以下 PySpark-Kafka 流 example在 Jupyter 笔记本中。这是我在笔记本中使用的代码的第一部分:

from pyspark import SparkContext
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils

sc = pyspark.SparkContext(master='local[*]',appName="PySpark streaming")
ssc = StreamingContext(sc, 2)

topic = "my-topic"
brokers = "localhost:9092"
kvs = KafkaUtils.createDirectStream(ssc, [topic], {"metadata.broker.list": brokers})

如果我运行该单元,我会收到以下错误/描述:

Spark Streaming's Kafka libraries not found in class path. Try one of the following.

1. Include the Kafka library and its dependencies with in the
 spark-submit command as

$ bin/spark-submit --packages org.apache.spark:spark-streaming-kafka-0-8:2.3.0 ...

2. Download the JAR of the artifact from Maven Central http://search.maven.org/,
Group Id = org.apache.spark, Artifact Id = spark-streaming-kafka-0-8-assembly, Version = 2.3.0.
Then, include the jar in the spark-submit command as

$ bin/spark-submit --jars <spark-streaming-kafka-0-8-assembly.jar> ...

我的问题是:如何将 --jars 或 --package 参数传递给 Jupyter Notebook?或者,我可以下载这个包并将其永久链接到 Python/Jupyter(也许通过 .bashrc 中的导出)?

最佳答案

至少有两种方法可以做到这一点,大致对应于错误消息中建议的两个选项:

第一种方法是相应地更新您各自的 Jupyter 内核(如果您尚未使用 Jupyter 内核,您应该 - 请参阅 this answer 了解在 Jupyter for Pyspark 中使用内核的详细一般性) .

更具体地说,您应该使用 env 下的以下条目更新 Pyspark 各自的 kernel.json 配置文件(如果您使用 以外的其他内容)-- master local,相应修改):

"PYSPARK_SUBMIT_ARGS": "--master local --packages org.apache.spark:spark-streaming-kafka-0-8:2.3.0 pyspark-shell"

第二种方法是将以下条目放入您的 spark-defaults.conf 文件中:

spark.jars.packages org.apache.spark:spark-streaming-kafka-0-8:2.3.0

在这两种情况下,您都不需要手动下载任何内容 - 第一次使用更新的配置运行 Pyspark 时,将下载必要的文件并将其放入适当的目录中。

关于python - 在 Jupyter 笔记本中使用 PySpark 时如何包含外部 Spark 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51105475/

相关文章:

python - 从另一个 Cloud 项目调用 Firestore 数据库显示 "Permission Error"

python - Django 设置.py : Separate local and global configuration

python - 如何建立一个Yaml文件来运行我的python代码

python - 查询一对多关系 SQLAlchemy

apache-spark - 通过 sparkSQL 进行 Hive 分桶

python - Papermill PySpark 支持

scala - 按两个单词过滤行 Spark Streaming

python - 如何计算pyspark数据框中一列中每个分类变量的频率?

linux - sc 未在 SparkContext 中定义

python - 无法修复 JSONDecodeError : Invalid control character