PySpark 结构化流查询 - 在仪表板可见性中查询

PySpark Structured Streaming Query - query in dashbord visibility

我写了一些连接到 kafka 代理的示例代码,从主题中读取数据并将其下沉到 snappydata table。

from pyspark.conf import SparkConf
from pyspark.context import SparkContext
from pyspark.sql import SQLContext, Row, SparkSession
from pyspark.sql.snappy import SnappySession 
from pyspark.rdd import RDD
from pyspark.sql.dataframe import DataFrame
from pyspark.sql.functions import col, explode, split
import time
import sys


def main(snappy):
    logger = logging.getLogger('py4j')
    logger.info("My test info statement")


    sns = snappy.newSession()
    df = sns \
    .readStream \
    .format("kafka") \
    .option("kafka.bootstrap.servers", "10.0.0.4:9092") \
    .option("subscribe", "test_import3") \
    .option("failOnDataLoss", "false") \
    .option("startingOffsets", "latest") \
    .load()
    bdf = df.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")

    streamingQuery = bdf\
    .writeStream\
    .format("snappysink") \
    .queryName("Devices3") \
    .trigger(processingTime="30 seconds") \
    .option("tablename","devices2") \
    .option("checkpointLocation","/tmp") \
    .start()

    streamingQuery.awaitTermination()


if __name__ == "__main__":
    from pyspark.sql.snappy import SnappySession
    from pyspark import SparkContext, SparkConf
    
    sc = SparkSession.builder.master("local[*]").appName("test").config("snappydata.connection", "10.0.0.4:1527").getOrCreate()
    snc = SnappySession(sc)
    main(snc)
    

我正在使用命令提交它

/opt/snappydata/bin/spark-submit --master spark://10.0.0.4:1527 /path_to/file.py --conf snappydata.connection=10.0.0.4:1527

一切正常,数据从 Kafka Topic 读取并写入 snappydata table。 我不明白为什么我在 SnappyData 仪表板中看不到此流式查询 UI - 在控制台中提交 pyspark 代码后,我看到新的 Spark Master UI 已启动。

我怎样才能从 pySpark 连接到 SnappyData 内部 Spark Master?

SnappyData 支持 Python 作业仅在 Smart Connector mode 中提交,这意味着它将始终通过单独的 Spark 集群启动以与 SnappyData 集群通信。因此,您会看到您的 Python 作业出现在这个 Spark 集群的 UI 上,而不是出现在 SnappyData 的仪表板上。