テーブルを更新して同時に実行するにはどうすればいいですか? 質問する

テーブルを更新して同時に実行するにはどうすればいいですか? 質問する

私は Spark Streaming 2.1 を使用しています。キャッシュされたテーブル (parquet、MySQL、またはユーザー定義のデータ ソースなどの Spark 提供のデータ ソースによって読み込まれる) を定期的に更新したいと思います。

  1. テーブルを更新するにはどうすればよいですか?

    次のようなテーブルがロードされているとします。

    spark.read.format("").load().createTempView("my_table")

    そしてそれはまたキャッシュされる

    spark.sql("cache table my_table")

    次のコードでテーブルを更新するだけで十分であり、次にテーブルがロードされるときに自動的にキャッシュされます。

    spark.sql("refresh table my_table")

    それとも手動で行う必要があるのでしょうか

    spark.table("my_table").unpersist spark.read.format("").load().createOrReplaceTempView("my_table") spark.sql("cache table my_table")

  2. テーブルを同時に更新しても安全ですか?

    ScheduledThreadPoolExecutor同時実行とは、メイン スレッドとは別に更新作業を実行することを意味します。

    テーブルで refresh を呼び出したときに、Spark がキャッシュされたテーブルを使用している場合は何が起こりますか?

ベストアンサー1

Spark 2.2.0 では、Hive または外部ツールによってテーブルのメタデータが更新された場合に、そのメタデータを更新する機能が導入されました。

APIを使用することでこれを実現できます。

spark.catalog.refreshTable("my_table")

この API は、テーブルのメタデータを更新して一貫性を保ちます。

おすすめ記事