pyspark-如何使用Spark 2.3.0将数据从流发送到函数

时间:2019-02-08 16:34:08

标签: pyspark streaming

我正在使用pyspark(spark 2.3.0)的“结构化流”,并且很难弄清楚如何使用自定义处理程序功能来处理流数据。

我阅读了有关foreachBatch df = spark \ .readStream \ .format("kafka") \ .option("maxFilesPerTrigger", 1) \ .option("kafka.bootstrap.servers", options["kafka.bootstrap.servers"]) \ .option("startingOffsets", options["startingOffsets"]) \ .option("subscribe", options["subscribe"]) \ .option("failOnDataLoss", options["failOnDataLoss"]) \ .load() \ .select( col('value').cast("string").alias('json'), col('key').cast("string").alias('kafka_key'), col("timestamp").cast("string").alias('kafka_timestamp') ) \ .withColumn('pjson', from_json(col('json'), jsonSchema)).drop('json') query = df \ .writeStream \ .foreach(customHandler) \ #this doesn't works on spark 2.3.0 .start() query.awaitTermination() 的文档。但仅从spark 2.4.x版本可用。有其他选择吗?

到目前为止我所拥有的:

import java.util.ArrayList;
import java.util.List;

public class A<T> {

    protected List<T> objects;

    public A() {
        objects = new ArrayList<T>();
    }

    public A(List<T> objects) {
        this.objects = objects;
    }

    public List<T> getObjects() {
        return objects;
    }

    public void addObject(T o) {
        getObjects().add(o);
    }

}

0 个答案:

没有答案