结构化流PySpark:UDF导致警告:CachedKafkaConsumer未在UninterruptibleThread中运行(KAFKA-1894)

时间:2018-06-15 12:58:05

标签: python apache-spark pyspark apache-kafka spark-structured-streaming

我有这个问题:

  

WARN CachedKafkaConsumer:CachedKafkaConsumer未运行   UninterruptibleThread。当CachedKafkaConsumer的方法时,它可能会挂起   由于KAFKA-1894而被打断

我实现了自己的基于UDF的功能,以便在Protobuf上反序列化Kafka的消息:

import Messages_Protobuf #My Messages_Protobuf.py
from pyspark.sql.functions import udf         

def message_proto(value):
    m = Messages_Protobuf.TrackingMessage()   
    m.ParseFromString(value)
    proto_json = {"id_req": m.id_req,
                "is_after": m.is_after,
                "type": m.type}
    return(proto_json)

schema = StructType() \
            .add("id_req", StringType()) \
            .add("is_after", StringType()) \
            .add("type", StringType()) 

proto_impressions_udf = udf(message_proto, schema)

我的ReadStream查询:

query = stream \
        .select(col("value")) \
        .select((self.proto_function("value")).alias("value_udf")) \
        .select("valued_udf.id_req","valued_udf.is_after", "valued_udf.type")

换句话说,我想使用Structured Streaming在Parquet文件上编写流,我在Protobuf上有我所有的Kafka消息,但我想编写反序列化的Parquet文件。

0 个答案:

没有答案