我想使用火花流将事件窗口插入到每日表中,同时使该表始终保持最新到最后一秒。
基本上我有这个火花1.4.1:
val lines = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap).map(_._2)
lines.window(Seconds(1), Seconds(1))
.foreachRDD { (rdd, time) =>
if (rdd.count > 0) {
hiveContext.read.json(rdd).toDF().write.mode(SaveMode.Append).save(s"tachyon://192.168.1.12:19998/persistedI")
hiveContext.sql(s"CREATE TABLE IF NOT EXISTS persistedI USING org.apache.spark.sql.parquet OPTIONS ( path 'tachyon://192.168.1.12:19998/persistedI')")
hiveContext.sql(s"REFRESH TABLE persistedI")
}
}
然而,随着时间的推移,这会变慢,正如我在日志中看到的那样,在每次插入时,所有先前的部分都被打开(阅读我假设的镶木地板页脚)
我尝试了以下方法,但这会使刷新速度变慢。
parquet.enable.summary-metadata false spark.sql.hive.convertMetastoreParquet.mergeSchema false
这种情况下最好的设置是什么?
(只要我能满足要求,我对使用的东西非常灵活)