使用Spark逐步增加表格中的火花流窗口的最有效方法

时间:2015-08-23 15:34:27

标签: apache-spark spark-streaming parquet alluxio

我想使用spark-streaming将事件窗口插入日常表,同时使该表始终保持最新状态。

基本上我有这个与火花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

这种情况的最佳设置是什么?

(只要我能满足要求,我对使用的内容非常灵活)

0 个答案:

没有答案