繁体   English   中英

如何使用pyspark将结构化流数据写入Cassandra表?

[英]How to write structured stream data to Cassandra table using pyspark?

这是我运行 strm.py 文件的终端命令

$SPARK_HOME/bin/spark-submit --master local --driver-memory 4g --num-executors 2 --executor-memory 4g --packages org.apache.spark:spark-sql-kafka-0-10_2.11 :2.4.0 org.apache.spark:spark-cassandra-connector_2.11:2.4.0 strm.py

错误:

无法从带有 URI org.apache.spark 的 JAR org.apache.spark:spark-cassandra-connector_2.11:2.4.0 加载主类。 请通过--class 指定一个类。 在 org.apache.spark.deploy.SparkSubmitArguments.error(SparkSubmitArguments.scala:657) atorg.apache.spark.deploy.SparkSubmitArguments.loadEnvironmentArguments(SparkSubmitArguments.scala:224) 在 org.apache.spark.SubparkArguments.scala:224) .scala:116) 在 org.apache.spark.deploy.SparkSubmit$$anon$2$$anon$1.(SparkSubmit.scala:907) 在 org.apache.spark.deploy.SparkSubmit$$anon$2.parseArguments(SparkSubmit. scala:907) 在 org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:81) 在 org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:920) 在 org.apache .spark.deploy.SparkSubmit$.main(SparkSubmit.scala:929) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

因此,任何人都可以帮助我解决无法加载的问题。

你有两个问题:

  • 您错误地提交了您的应用程序 - 在org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.0org.apache.spark:spark-cassandra-connector_2.11:2.4.0之间没有逗号org.apache.spark:spark-cassandra-connector_2.11:2.4.0 ,因此spark-submit将 cassandra 连接器视为 jar,而不是使用您的 python 文件。

  • 当前版本的 Spark Cassandra 连接器不支持直接写入 Spark 结构化流数据 - 此功能仅在 DSE Analytics 中可用。 但是你可以通过使用foreachBatch来解决这个foreachBatch ,就像这样(未经测试,可以在此处获得可用的 Scala 代码):

def foreach_batch_function(df, epoch_id):
    df.format("org.apache.spark.sql.cassandra").option("keyspace","test")\
       .option("table", "my_tables").mode('append').save()

query.writeStream.foreachBatch(foreach_batch_function).start()  

暂无
暂无

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

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