我們有一個小配置表(大約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