我正在使用带有pyspark的jupyter笔记本,docker图片如下:jupyter all spark笔记本
现在我想编写一个pyspark流应用程序,它使用来自kafka的消息。在spark-kafka集成指南中,他们描述了如何使用spark-submit部署这样的应用程序(它需要链接一个外部jar-解释见第3章)。部署)。但因为我用的是jupyter笔记本,所以我从来没有真正运行过 spark-submit
命令,我想如果我按execute,它会在后面运行。
在 spark-submit
命令可以指定一些参数,其中一个是 -jars
,但我不清楚如何从笔记本(或外部通过环境变量)设置此参数。我假设我可以通过 SparkConf
或者 SparkContext
对象。有没有人对如何从笔记本正确执行链接有经验?
5条答案
按热度按时间2g32fytz1#
我已经设法让它工作,从jupyter笔记本,这是运行形式的所有Spark容器。
我在jupyterhub中启动一个python3笔记本,并覆盖pyspark\u submit\u args标志,如下所示。kafka消费者库是从maven存储库下载的,并放在我的主目录/home/jovyan中:
注意:不要忘记环境变量中的pyspark shell!
扩展:如果您想包含来自spark包的代码,可以改用--packages标志。关于如何在all spark笔记本中实现这一点的示例可以在这里找到
avkwfej42#
如果有人和我一样:我尝试了以上所有的解决方案,但没有一个对我有效。我要做的是用jupyter笔记本里的delta lake。
我终于可以用了
from delta.tables import *
通过呼叫SparkContext.addPyFile("/path/to/your/jar.jar")
第一。虽然在spark官方文件中,它只提到.zip
或者.py
但我试过了.jar
而且效果很好。rryofs0p3#
实际上,在创建sparksession时,有一种方法可以通过sparkconf对象动态链接它,如下面的回答所述:
ztyzrc3y4#
对于使用spark处理jupyter笔记本,您需要在创建sparkcontext对象之前给出外部jar的位置。pyspark——jars youjar将创建一个带有外部jar位置的sparkcontext
vaj7vani5#
通过设置相关的环境变量,可以使用pyspark命令运行jupyter笔记本:
是您要用来访问笔记本的端口,yyy是ip地址。
现在只需运行pyspark并添加--jars作为开关,就像spark submit一样