【问题标题】:PySpark Kafka py4j.protocol.Py4JJavaError: An error occurred while calling o28.loadPySpark Kafka py4j.protocol.Py4JJavaError: 调用 o28.load 时出错
【发布时间】:2020-10-02 11:00:18
【问题描述】:

将 Kafka 消息转换为数据帧时,在将包作为参数传递时出错。

from pyspark.sql import SparkSession, Row
from pyspark.context import SparkContext
from kafka import KafkaConsumer
import os

os.environ['PYSPARK_SUBMIT_ARGS'] = '--jars spark-sql-kafka-0-10_2.11-2.0.2.jar,spark-streaming-kafka-0-8-assembly_2.11-2.3.1.jar pyspark-shell'

sc = SparkContext.getOrCreate()
spark = SparkSession(sc)

df = spark \
  .read \
  .format("kafka") \
  .option("kafka.bootstrap.servers", "localhost:9092") \
  .option("subscribe", "Jim_Topic") \
  .load()
df.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")

py4j.protocol.Py4JJavaError: 调用 o28.load 时出错。 : java.util.ServiceConfigurationError: org.apache.spark.sql.sources.DataSourceRegister: 提供者 org.apache.spark.sql.kafka010.KafkaSourceProvider 无法实例化

【问题讨论】:

    标签: apache-spark pyspark apache-kafka


    【解决方案1】:

    使用以下配置定义 jar 对我有帮助,

    spark = SparkSession.builder\
      .appName("Kafka Spark")\
      .config("spark.jars", "/C:/Hadoop/Spark/spark-3.0.0-preview2-bin- hadoop2.7/jars/spark-sql-kafka-0-10_2.12-3.0.0-preview2.jar")\
      .config("spark.executor.extraClassPath", "/C:/Hadoop/Spark/spark-3.0.0-preview2-bin-hadoop2.7/jars/spark-sql-kafka-0-10_2.12-3.0.0-preview2.jar")\
      .config("spark.executor.extraLibrary", "/C:/Hadoop/Spark/spark-3.0.0-preview2-bin-hadoop2.7/jars/spark-sql-kafka-0-10_2.12-3.0.0-preview2.jar")\
      .config("spark.driver.extraClassPath", "/C:/Hadoop/Spark/spark-3.0.0-preview2-bin-hadoop2.7/jars/spark-sql-kafka-0-10_2.12-3.0.0-preview2.jar")\
      .getOrCreate()
    

    【讨论】:

      【解决方案2】:

      发生这种情况是因为 spark-sql-kafka 的版本与您当前运行的 spark 版本不匹配。


      例如,您当前使用的依赖项适用于 Spark 2.4.1:

      org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.1 
      

      要解决此问题,只需在依赖字符串末尾使用 Spark 的版本(替换 x.y.z):

      org.apache.spark:spark-sql-kafka-0-10_2.11:x.y.z 
      

      【讨论】:

        猜你喜欢
        • 2021-04-17
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 2017-05-17
        • 1970-01-01
        • 2016-08-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多