spark-redshift-connector:将保存与redshift与删除查询相结合

时间:2016-07-17 14:51:00

标签: apache-spark amazon-redshift

我想定期使用 spark-redshift-connector (scala)更新Redshift。 每次更新都以删除操作开始。 (我正在对Redshift执行一种 Upsert

有没有办法可以用库执行它? 是否可以进行交易?

非常感谢任何建议。

感谢, 叶兰。

2 个答案:

答案 0 :(得分:1)

似乎有一个名为" preactions " (以及" postactions ")可以解决问题。

查看文档: https://github.com/databricks/spark-redshift

答案 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()