Apache spark Spark结构化流媒体,保存最新n条记录以供查询
我正在编写一个应用程序,它使用结构化流将卡夫卡的消息读入Spark 传入消息是字符串格式的与交易相关的修复消息。它们被转换为JavaPOJO 下面是示例代码: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.
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()