我们有一个小配置表(大约50000条记录),每天更新一次。刷新缓存的数据帧?
我们有一个缓存的数据框用于这个表格,并且正在加入spark数据。在基本配置单元中加载新数据时,我们如何刷新数据框?
DataFrame tempApp = hiveContext.table("emp_data");
//Get Max Load-Date
Date max_date = max_date = tempApp.select(max("load_date")).collect()[0].getDate(0);
//Get data for latest date and cache. This will be used to join with stream data.
DataFrame emp= hiveContext.table("emp_data").where("load_date='" + max_date + "'").cache();
// Get message from Kafka Stream
JavaPairInputDStream<String, String> messages = KafkaUtils.createDirectStream(....);
JavaDStream<MobileFlowRecord> rddMobileFlorRecs = messages.map(Record::parseFromMessage);
kafkaRecs.foreachRDD(rdd->{DataFrame recordDataFrame = hiveContext.createDataFrame(rdd, Record.class);
DataFrame joinedDataSet = recordDataFrame.join(emp,
recordDataFrame.col("application").equalTo(app.col("emp_id"));
joinedDataSet. <Do furthur processing>
});
我怀疑我是否理解你的解决方案。缓存和取消缓存数据集可能会解决问题,但会破坏缓存的目的,因为缓存仅适用于一次迭代。我已经添加了示例代码以获得更多的说明。其次,我测试了每次迭代的缓存和非缓存大约会延迟3秒。想知道是否有其他方法来实现这一目标? – Akhil