[英]How to Write Structured Streaming Data into Cassandra with PySpark?
[英]PySpark Structured Streaming data writing into Cassandra not populating data
我想将 Spark 结构化流数据写入 cassandra。 我的火花版本是 2.4.0。
我来自 Kafka 的输入源是 JSON,所以在写入控制台时,没问题,但是当我在 cqlsh Cassandra 中查询时,表中没有附加记录。 你能告诉我有什么问题吗?
schema = StructType() \
.add("humidity", IntegerType(), True) \
.add("time", TimestampType(), True) \
.add("temperature", IntegerType(), True) \
.add("ph", IntegerType(), True) \
.add("sensor", StringType(), True) \
.add("id", StringType(), True)
def writeToCassandra(writeDF, epochId):
writeDF.write \
.format("org.apache.spark.sql.cassandra") \
.mode('append') \
.options("spark.cassandra.connection.host", "cassnode1, cassnode2") \
.options(table="sensor", keyspace="sensordb") \
.save()
# Load json format to dataframe
df = spark \
.readStream \
.format("kafka") \
.option("kafka.bootstrap.servers", "kafkanode") \
.option("subscribe", "iot-data-sensor") \
.load() \
.select([
get_json_object(col("value").cast("string"), "$.{}".format(c)).alias(c)
for c in ["humidity", "time", "temperature", "ph", "sensor", "id"]])
df.writeStream \
.foreachBatch(writeToCassandra) \
.outputMode("update") \
.start()
我在 pyspark 中遇到了同样的问题。 尝试以下步骤
首先,验证它是否连接到 cassandra。 您可以指向一个不可用的表,看看它是否因为“找不到表”而失败
尝试 writeStream 如下(在调用 cassandra 更新之前包括触发器和 output 模式)
df.writeStream \.trigger(processingTime="10 seconds") \.outputMode("update") \.foreachBatch(writeToCassandra) \
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.