Apache spark PySpark结构化流式数据写入Cassandra而不填充数据
我想将spark结构化流式数据写入cassandra。我的spark版本是2.4.0 我来自Kafka的输入源带有JSON,因此当写入控制台时,这是可以的,但是当我在cqlsh Cassandra中查询时,没有记录附加到表中。你能告诉我怎么了吗Apache spark PySpark结构化流式数据写入Cassandra而不填充数据,apache-spark,cassandra,pyspark,spark-structured-streaming,spark-cassandra-connector,Apache Spark,Cassandra,Pyspark,Spark Structured Streaming,Spark Cassandra Connector,我想将spark结构化流式数据写入cassandra。我的spark版本是2.4.0 我来自Kafka的输入源带有JSON,因此当写入控制台时,这是可以的,但是当我在cqlsh Cassandra中查询时,没有记录附加到表中。你能告诉我怎么了吗 schema = StructType() \ .add("humidity", IntegerType(), True) \ .add("time", TimestampType(), True) \
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()
我在Pypark也有同样的问题。尝试以下步骤
df.writeStream\
.触发器(processingTime=“10秒”)\
.outputMode(“更新”)\
.foreachBatch(writeToCassandra)\