我想定期使用 spark-redshift-connector (scala)更新Redshift。 每次更新都以删除操作开始。 (我正在对Redshift执行一种 Upsert )
有没有办法可以用库执行它? 是否可以进行交易?
非常感谢任何建议。
感谢, 叶兰。
答案 0 :(得分:1)
似乎有一个名为" preactions " (以及" postactions ")可以解决问题。
答案 1 :(得分:0)
请参考以下示例:
val min_date=mydf.select(min("actual_ship_date")).rdd.map(line=>line(0)).take(1)
val max_date=mydf.select(max("actual_ship_date")).rdd.map(line=>line(0)).take(1)
val query="delete from semi_sdt.kgd_tsb_shippment where
actual_ship_date>='"+min_date(0).toString+"' and
actual_ship_date<='"+max_date(0).toString+"'"
//Write data to RedShift
mydf.coalesce(1).write.
format("com.databricks.spark.redshift").
option("url",redShiftUrl).
option("dbtable","semi_sdt.kgd_tsb_shippment").
option("tempdir",s3dir).
option("forward_spark_s3_credentials",true).
option("preactions",query).
mode("append").
save()