将流数据插入Amazon Redshift群集

时间:2018-01-29 07:04:33

标签: amazon-web-services spark-streaming amazon-redshift

我正在尝试将插入火花流数据导入Amazon Redshift群集,但无法找到正确的方法。

下面是我得到的代码,但它首次插入S3然后复制到Redshift:。

#REDSHIFT_JDBC_URL = "jdbc:redshift://%s:5439/%s" % (REDSHIFT_SERVER, DATABASE)

df.write \
    .format("com.databricks.spark.redshift") \
    .option("url", REDSHIFT_JDBC_URL) \
    .option("dbtable", TABLE_NAME) \
    .option("tempdir", "s3n://%s:%s@%s" % (ACCESS_KEY, SECRET, S3_BUCKET_PATH)) \
    .mode("overwrite") \
    .save()

它会影响流式传输或插入性能吗?

还是以其他方式做到这一点?

1 个答案:

答案 0 :(得分:0)

您使用的Spark的Redshift数据源通过将数据写入S3上的临时文件将数据写入Redshift,然后使用Redshift COPY命令将数据加载到Redshift中。 COPY命令要求数据位于S3上的文件中,这是以最有效的方式将数据加载到Redshift中,因此您的代码当前正在执行的操作似乎是正确的。

另请参阅:https://databricks.com/blog/2015/10/19/introducing-redshift-data-source-for-spark.html