Python pyspark-kafka集成:缺少库

Python pyspark-kafka集成:缺少库,python,apache-spark,pyspark,apache-kafka,Python,Apache Spark,Pyspark,Apache Kafka,为了开始与卡夫卡合作的项目,我在这里按照Databricks的指示行事: 守则: # coding: utf-8 import sys import os,time sys.path.append("/usr/local/lib/python2.7/dist-packages") from pyspark.sql import SparkSession,Row from pyspark import SparkContext,SQLContext from pyspark.streaming

为了开始与卡夫卡合作的项目,我在这里按照Databricks的指示行事:

守则:

# coding: utf-8
import sys
import os,time
sys.path.append("/usr/local/lib/python2.7/dist-packages")
from pyspark.sql import SparkSession,Row
from pyspark import SparkContext,SQLContext
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils
from pyspark.sql.types import *
import pyspark.sql.functions
import json

spark = SparkSession.builder.appName("Kakfa-test").getOrCreate()
spark.sparkContext.setLogLevel('WARN')


trainingSchema = StructType([
  StructField("code",StringType(),True),
  StructField("ean",StringType(),True),
  StructField("name",StringType(),True),
  StructField("description",StringType(),True),
  StructField("category",StringType(),True),
  StructField("attributes",StringType(),True)
])
trainingDF = spark.createDataFrame(sc.emptyRDD(),trainingSchema)

broker, topic = 
['kafka.partner.stg.some.domain:9092','hybris.products']

df = spark \
.readStream \
.format("kafka") \
.option("kafka.bootstrap.servers", 
"kafka.partner.stg.some.domain:9092") \
.option("subscribe", "hybris.products") \
.option("startingOffsets", "earliest") \
.load()
我的Hadoop版本是2.6,Spark版本是2.3.0

带有
spark submit
的命令行是:

spark提交--jars-jars/spark-sql-kafka-0-10_2.11-2.3.0.jar-kafka-test-002.py

错误消息:

Py4JJavaError:调用o48.load时出错。 :java.lang.NoClassDefFoundError:org/apache/kafka/common/serialization/ByteArraydSerializer 位于org.apache.spark.sql.kafka010.KafkaSourceProvider$(KafkaSourceProvider.scala:413) 位于org.apache.spark.sql.kafka010.KafkaSourceProvider$(KafkaSourceProvider.scala) 位于org.apache.spark.sql.kafka010.KafkaSourceProvider.validateStreamOptions(KafkaSourceProvider.scala:360) 位于org.apache.spark.sql.kafka010.KafkaSourceProvider.sourceSchema(KafkaSourceProvider.scala:64) 位于org.apache.spark.sql.execution.datasources.DataSource.sourceSchema(DataSource.scala:231) 位于org.apache.spark.sql.execution.datasources.DataSource.sourceInfo$lzycompute(DataSource.scala:94) 位于org.apache.spark.sql.execution.datasources.DataSource.sourceInfo(DataSource.scala:94) 位于org.apache.spark.sql.execution.streaming.StreamingRelation$.apply(StreamingRelation.scala:33) 位于org.apache.spark.sql.streaming.DataStreamReader.load(DataStreamReader.scala:170) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:498) 位于py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) 位于py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) 在py4j.Gateway.invoke处(Gateway.java:282) 位于py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 在py4j.commands.CallCommand.execute(CallCommand.java:79) 在py4j.GatewayConnection.run处(GatewayConnection.java:214) 运行(Thread.java:745) 原因:java.lang.ClassNotFoundException:org.apache.kafka.common.serialization.ByteArraydSerializer 位于java.net.URLClassLoader.findClass(URLClassLoader.java:381) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)


您可以在我上面提到的网站上查看,我导入的jar文件与此完全相同。所以,我不知道为什么会这样。也许还有一个模块没提到?我在这里真的很迷茫

提到的JAR不包括kafka客户端的所有依赖项。您更应该使用
--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.3.0
(如部署:一节中的文档所述)

提到的JAR不包括kafka客户端的所有依赖项。您应该使用
--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.3.0
(如部署一节中的文档所述)

jars
packages
做同样的事情。一个是在下载之前下载的我发现了这个:[在下载之后,我刚刚添加了--jar.Works!
jars
packages
做了同样的事情。一个是在下载之前下载的我发现了这个:[在下载之后,我刚刚添加了--jar.Works!