1

スパークストリーミングを使用して、イベントのウィンドウを毎日のテーブルに挿入し、そのテーブルを常に最新の状態に保ちたいと考えています。

基本的に、私はこれをspark 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

そのような場合、どのような設定が最適でしょうか?

(要件を満たすことができる限り、使用されるものにはかなり柔軟です)

4

0 に答える 0