1

sparkアプリケーション用にpostgres dbから特定のレコードをロード/削除する必要があります。ロードについては、私はデータを削除するには、以下の形式spark sqlデータフレームで機能を削除

sqlContext.read.format("jdbc").options(Map("url" -> "postgres url", 
     "user" -> "user" , 
     "password" -> "xxxxxx" , 
     "table" -> "(select * from employee where emp_id > 1000) as filtered_emp")).load() 

でスパークデータフレームを使用しています、私は直接SQLを書いています代わりに疑問があるデータフレーム

delete from employee where emp_id > 1000 

を使用してのスパーク方法があります以下のようなデータベースのレコードを削除しますか?または、唯一の方法は、直接SQLを使用することです?

sqlContext.read.format("jdbc").options(Map("url" -> "postgres url", 
     "user" -> "user" , 
     "password" -> "xxxxxx" , 
     "table" -> "(delete from employee where emp_id > 1000) as filtered_emp")).load() 
+1

標準のJDBCクライアントを使用するだけですか? – zero323

答えて

1

実際のデータソース(ポストグルのテーブル)を変更(削除)する場合、Sparkは素晴らしい方法ではありません。 これを実現するためにjdbcクライアントを直接使用することができます。

とにかく(データフレームの一部として計算しているいくつかの手掛かりに基づいて分散して)これを実行したい場合は、レコードを削除するためのロジック/トリガ情報を持つデータフレームに対応して記述された同じjdbcクライアントコードを持つことができます。これは複数のワーカーで並列実行できます。