繁体   English   中英

如何正确将Kafka流式pyspark作业提交给Google Dataproc

[英]How to properly submit kafka streaming pyspark job to Google Dataproc

我正在尝试通过Dataproc UI提交pyspark作业,并不断收到错误,看来它没有加载kafka流包。

这是UI在我的工作中提供的REST命令: POST /v1/projects/projectname/regions/global/jobs:submit/ { "projectId": "projectname", "job": { "placement": { "clusterName": "cluster-main" }, "reference": { "jobId": "job-33ab811a" }, "pysparkJob": { "mainPythonFileUri": "gs://projectname/streaming.py", "args": [ "--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.2.0" ], "jarFileUris": [ "gs://projectname/spark-streaming-kafka-0-10_2.11-2.2.0.jar" ] } } }

我试图通过kafka软件包作为args和jar文件。

这是我的代码( streaming.py ):

from pyspark import SparkContext
from pyspark.sql import SparkSession
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils
import json


sc = SparkContext()

spark = SparkSession.builder.master("local").appName("Spark-Kafka-Integration").getOrCreate()

# < ip > is masked
df = spark \
    .readStream \
    .format("kafka") \
    .option("kafka.bootstrap.servers", "<ip>:9092") \
    .option("subscribe", "rsvps") \
    .option("startingOffsets", "earliest") \
    .load()
df.printSchema()

错误:java.lang.ClassNotFoundException:无法找到数据源:kafka。 请在http://spark.apache.org/third-party-projects.html中找到软件包

完整跟踪: https : //pastebin.com/Uz3iGy2N

您可能会遇到一个问题,其中“ --packages”是spark-submit中的语法糖,当高级工具(Dataproc)以编程方式调用Spark提交时相互作用很差,在我的答复中描述了一种替代语法: use来自google-dataproc的Spark集群中pyspark作业中的外部库

长话短说,您可以使用properties在Dataproc请求中指定等效的spark.jars.packages=org.apache.spark:spark-sql-kafka-0-10_2.11:2.2.0 ,而不是在--properties中传递--properties工作参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM