Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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 Spark结构化流媒体,保存最新n条记录以供查询_Apache Spark_Spark Streaming - Fatal编程技术网

Apache spark Spark结构化流媒体,保存最新n条记录以供查询

Apache spark Spark结构化流媒体,保存最新n条记录以供查询,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我正在编写一个应用程序,它使用结构化流将卡夫卡的消息读入Spark 传入消息是字符串格式的与交易相关的修复消息。它们被转换为JavaPOJO 下面是示例代码: SparkSession spark = createSparkSession(); // Subscribe to 1 topic Dataset<Row> df = spark .readStream() .format("kafka") .option("kafka.

我正在编写一个应用程序,它使用结构化流将卡夫卡的消息读入Spark

传入消息是字符串格式的与交易相关的修复消息。它们被转换为JavaPOJO

下面是示例代码:

SparkSession spark = createSparkSession();

    // Subscribe to 1 topic
    Dataset<Row> df = spark
      .readStream()
      .format("kafka")
      .option("kafka.bootstrap.servers", brokers)
      .option("subscribe", topics)
      .load();

    df.as(Encoders.STRING()).map(new MapFunction<String, OrderData>() {

        @Override
        public OrderData call(String arg0) throws Exception {
            // TODO Auto-generated method stub
            return OrderData(arg0);
        }
    }, Encoders.bean(OrderData.class));
SparkSession spark=createSparkSession();
//订阅1个主题
数据集df=spark
.readStream()
.格式(“卡夫卡”)
.option(“kafka.bootstrap.servers”,代理)
.选项(“订阅”,主题)
.load();
df.as(Encoders.STRING()).map(新的MapFunction(){
@凌驾
public OrderData调用(字符串arg0)引发异常{
//TODO自动生成的方法存根
退货订单数据(arg0);
}
},Encoders.bean(OrderData.class));

我的问题是,如何将最后n条记录保存在数据集中的内存中,以便在该数据集上支持Spark SQL?

发现类似的方法可以工作:

dataset.writeStream().format("memory").queryName("orderdataDS").start()

我发现像这样的事情会起作用:

dataset.writeStream().format("memory").queryName("orderdataDS").start()