我试图看看我是否可以使用spark结构流(v2.2)将数据流式传输到Redshift,我找到了spark-redshift
库(https://github.com/databricks/spark-redshift)。但是,它仅适用于批处理模式。关于如何使用流数据的任何其他建议? COPY
对Redshift的表现如何?
欣赏!
答案 0 :(得分:1)
对于少量数据(偶尔会有几行数据),可以使用:
insert into table ...
update table ...
delete from table ...
用于维护红移数据的命令。 这就是火花流可能会起作用的方式。
但是,对于较大的卷,您必须始终: 1)将数据写入s3,最好分成1MB到1GB的文件,最好是gzip。 2)运行redshift copy命令将s3数据加载到redshift“staging”区域 3)运行redshift sql将登台数据合并到目标表中。
使用此复制方法的效率可能比单个插入方式高出数百倍。
这当然意味着你必须以批处理模式运行。
您可以每隔几分钟运行一次批量更新,以使红移数据延迟保持较低。