gpt4 book ai didi

apache-spark - Spark Cassandra 连接器错误 : java. lang.NoClassDefFoundError: com/datastax/spark/connector/TableRef

转载 作者:行者123 更新时间:2023-12-04 09:35:42 26 4
gpt4 key购买 nike

Spark version:3.00
scala:2.12
Cassandra::3.11.4
spark-cassandra-connector_2.12-3.0.0-alpha2.jar
我没有使用 DSE。下面是我将数据帧写入我的 Cassandra 数据库的测试代码。
        spark = SparkSession \
.builder \
.config("spark.jars","spark-streaming-kafka-0-10_2.12-3.0.0.jar,spark-sql-kafka-0-10_2.12-3.0.0.jar,kafka-clients-2.5.0.jar,commons-pool2-2.8.0.jar,spark-token-provider-kafka-0-10_2.12-3.0.0.jar,**spark-cassandra-connector_2.12-3.0.0-alpha2.jar**") \
.config("spark.cassandra.connection.host", "127.0.0.1")\
.config('spark.cassandra.output.consistency.level', 'ONE')\
.appName("StructuredNetworkWordCount") \
.getOrCreate()

streamingInputDF = spark \
.readStream \
.format("kafka") \
.option("kafka.bootstrap.servers", "192.168.56.1:9092") \
.option("subscribe", "def") \
.load()
##Dataset operations

def write_to_cassandra(streaming_df,E):
streaming_df\
.write \
.format("org.apache.spark.sql.cassandra") \
.options(table="a", keyspace="abc") \
.save()

q1 =sites_flat.writeStream \
.outputMode('update') \
.foreachBatch(write_to_cassandra) \
.start()
q1.awaitTermination()
我能够对数据框执行一些操作并将其打印到控制台,但我无法从我的 Cassandra 数据库中保存甚至读取它。我得到的错误是:
      File "C:\opt\spark-3.0.0-bin-hadoop2.7\python\lib\py4j-0.10.9-src.zip\py4j\protocol.py", line 328, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o70.load.
: java.lang.NoClassDefFoundError: com/datastax/spark/connector/TableRef
at org.apache.spark.sql.cassandra.DefaultSource$.TableRefAndOptions(DefaultSource.scala:142)
at org.apache.spark.sql.cassandra.DefaultSource.createRelation(DefaultSource.scala:56)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:339)
at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:279)
at org.apache.spark.sql.DataFrameReader.$anonfun$load$2(DataFrameReader.scala:268)
at scala.Option.getOrElse(Option.scala:189)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:268)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:203)
我曾尝试使用其他 cassandra 连接器版本(2.5)但遇到相同的错误
请帮忙!!!

最佳答案

问题是您正在使用 spark.jars选项只包含提供到类路径中的 jars。但是TableRef案例类在 spark-cassandra-connector-driver 中依赖于 spark-cassandra-connector 的包.要解决这个问题,最好启动 pysparkspark-submit--packages com.datastax.spark:spark-cassandra-connector_2.12:3.0.0-alpha2 (与 kafka 支持相同) - 在这种情况下,Spark 将获取所有必要的依赖项并将它们放入类路径中。
附言与 alpha2发布您可能会在获取某些依赖项时遇到问题,例如 ffi , groovy等 - 这是一个已知错误(主要在 Spark 中):SPARKC-599 ,这已经修复了,我们希望很快就能获得测试版。
更新 (14.03.2021):最好使用 assembly version of SCC这包括所有必要的依赖项。
P.P.S.从 Spark Structured Streaming 写入 Cassandra,不要使用 foreachbatch ,只需用作普通数据接收器:

     val query = streamingCountsDF.writeStream
.outputMode(OutputMode.Update)
.format("org.apache.spark.sql.cassandra")
.option("checkpointLocation", "webhdfs://192.168.0.10:5598/checkpoint")
.option("keyspace", "test")
.option("table", "sttest_tweets")
.start()

关于apache-spark - Spark Cassandra 连接器错误 : java. lang.NoClassDefFoundError: com/datastax/spark/connector/TableRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62604988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com