Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark PySpark结构化流式数据写入Cassandra而不填充数据_Apache Spark_Cassandra_Pyspark_Spark Structured Streaming_Spark Cassandra Connector - Fatal编程技术网

Apache spark PySpark结构化流式数据写入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) \

我想将spark结构化流式数据写入cassandra。我的spark版本是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()

我在Pypark也有同样的问题。尝试以下步骤

  • 首先,验证它是否连接到cassandra。您可以指向一个不可用的表,查看它是否因为“找不到表”而失败

  • 按如下所示尝试writeStream(在调用cassandra更新之前包括触发器和输出模式)

  • df.writeStream\
    .触发器(processingTime=“10秒”)\
    .outputMode(“更新”)\
    .foreachBatch(writeToCassandra)\