在jupyter笔记本中向pyspark添加自定义jar

vc9ivgsu  于 2021-06-07  发布在  Kafka
关注(0)|答案(5)|浏览(728)

我正在使用带有pyspark的jupyter笔记本,docker图片如下:jupyter all spark笔记本
现在我想编写一个pyspark流应用程序,它使用来自kafka的消息。在spark-kafka集成指南中,他们描述了如何使用spark-submit部署这样的应用程序(它需要链接一个外部jar-解释见第3章)。部署)。但因为我用的是jupyter笔记本,所以我从来没有真正运行过 spark-submit 命令,我想如果我按execute,它会在后面运行。
spark-submit 命令可以指定一些参数,其中一个是 -jars ,但我不清楚如何从笔记本(或外部通过环境变量)设置此参数。我假设我可以通过 SparkConf 或者 SparkContext 对象。有没有人对如何从笔记本正确执行链接有经验?

2g32fytz

2g32fytz1#

我已经设法让它工作,从jupyter笔记本,这是运行形式的所有Spark容器。
我在jupyterhub中启动一个python3笔记本,并覆盖pyspark\u submit\u args标志,如下所示。kafka消费者库是从maven存储库下载的,并放在我的主目录/home/jovyan中:

import os
os.environ['PYSPARK_SUBMIT_ARGS'] = 
  '--jars /home/jovyan/spark-streaming-kafka-assembly_2.10-1.6.1.jar pyspark-shell'

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

sc = pyspark.SparkContext()
ssc = StreamingContext(sc,1)

broker = "<my_broker_ip>"
directKafkaStream = KafkaUtils.createDirectStream(ssc, ["test1"],
                        {"metadata.broker.list": broker})
directKafkaStream.pprint()
ssc.start()

注意:不要忘记环境变量中的pyspark shell!
扩展:如果您想包含来自spark包的代码,可以改用--packages标志。关于如何在all spark笔记本中实现这一点的示例可以在这里找到

avkwfej4

avkwfej42#

如果有人和我一样:我尝试了以上所有的解决方案,但没有一个对我有效。我要做的是用jupyter笔记本里的delta lake。
我终于可以用了 from delta.tables import * 通过呼叫 SparkContext.addPyFile("/path/to/your/jar.jar") 第一。虽然在spark官方文件中,它只提到 .zip 或者 .py 但我试过了 .jar 而且效果很好。

rryofs0p

rryofs0p3#

实际上,在创建sparksession时,有一种方法可以通过sparkconf对象动态链接它,如下面的回答所述:

spark = SparkSession \
    .builder \
    .appName("My App") \
    .config("spark.jars", "/path/to/jar.jar,/path/to/another/jar.jar") \
    .getOrCreate()
ztyzrc3y

ztyzrc3y4#

对于使用spark处理jupyter笔记本,您需要在创建sparkcontext对象之前给出外部jar的位置。pyspark——jars youjar将创建一个带有外部jar位置的sparkcontext

vaj7vani

vaj7vani5#

通过设置相关的环境变量,可以使用pyspark命令运行jupyter笔记本:

export PYSPARK_DRIVER_PYTHON=jupyter
export IPYTHON=1
export PYSPARK_DRIVER_PYTHON_OPTS="notebook --port=XXX --ip=YYY"

是您要用来访问笔记本的端口,yyy是ip地址。
现在只需运行pyspark并添加--jars作为开关,就像spark submit一样

相关问题