如何以原子方式将两个Spark DataFrames写入Redshift?

时间:2018-04-10 23:10:05

标签: apache-spark amazon-redshift databricks

我正在使用Databricks spark-redshift将DataFrames写入Redshift。我有两个DataFrame附加到两个单独的表,但我需要这个以原子方式发生,即如果第二个DataFrame无法写入其表,我将需要第一个也撤消。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

解决方案是为每个目标表创建一个临时表。将Spark结果写入数据库:

  1. 清理临时表(DELETE FROM staging_table
  2. 使用spark-redshift(非原子)
  3. 将数据帧写入登台表
  4. 从暂存表中原子复制到事务中的目标表(对于Python使用redshift-sqlalchemy包)。
  5. 一次只能运行一个Spark应用程序实例,你不能同时写两个作业写入临时表,否则结果数据会赢得&#39 ; t有效。