2017-07-13 3 views
1

1週間に1回バッチで更新されるexchangeRatesのテーブルがあります。これは、異なるクラスタ間で、他のバッチジョブやストリーミングジョブで使用されるため、これをすべてのジョブ共有の永続的な共有テーブルとして保存します。複数の同時読者が指定された永続表の行を更新またはリセットする方法はありますか?

allExchangeRatesDF.write.saveAsTable("exchangeRates") 

どのように最善そして(このデータを管理し、バッチジョブのための)優雅更新テーブルの内容(実際にはそれを完全に上書き)する - それの消費者など、さまざまなスパークジョブを考慮し、particularilyにその使用を与えますいくつかの24/7ストラクチャードストリーミングストリーム?

IveはAPIをチェックしましたが、明らかに何か不足しています。可能性が非常に高い。

ありがとうございます!

+0

あなたは 'allExchangeRatesDF.write.mode("上書き ")してみましたか?saveAsTable(" exchangeRates ")'? –

答えて

0

私は、あなたが何らかの種類のトランザクションサポートを期待していると思います。saveAsTableが進行中です。更新/リセットが完了するまで、Sparkはすべての書き込みを保持します。

私はは、「新しいテーブル」に属している行を表しますバッチIDを持つ(insertInto使用)新しいレコードを追加するための要件に対処するための最良の方法だと思います。

insertInto(tableNameの:文字列):指定されたテーブルにデータフレームのコンテンツを挿入ユニット。 DataFrameのスキーマは、テーブルのスキーマと同じである必要があります。

次に、バッチIDを使用して、行がデータセットの唯一の行であるかのように処理します。

関連する問題