【发布时间】:2016-11-20 05:21:15
【问题描述】:
我想使用 spark-redshift-connector (scala) 定期更新 Redshift。 每次更新都以删除操作开始。 (我正在向 Redshift 执行一种 Upsert)
有没有办法可以用库来执行它? 可以用交易吗?
任何建议将不胜感激。
谢谢, 伊兰。
【问题讨论】:
标签: apache-spark amazon-redshift
我想使用 spark-redshift-connector (scala) 定期更新 Redshift。 每次更新都以删除操作开始。 (我正在向 Redshift 执行一种 Upsert)
有没有办法可以用库来执行它? 可以用交易吗?
任何建议将不胜感激。
谢谢, 伊兰。
【问题讨论】:
标签: apache-spark amazon-redshift
似乎有一个名为“preactions”(和“postactions”)的选项可以解决问题。
【讨论】:
请参考以下示例:
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()
【讨论】: