是否可以将数据从 Redshift 传输到 Elasticsearch?
Is it possible to transfer data from Redshift to Elasticsearch?
我正在研究与 Amazon elasticsearch service.For 有关的东西,我需要从 Amazon 获取数据 Redshift.The 要传输的数据很大,即 100 GB.Is 无论如何直接从 Redshift 获取它还是像 Redshift->s3->elasticsearch 这样的两步过程?
看起来没有直接的数据传输管道可以将数据从 Redshift 推送到 elasticsearch。一种替代方法是先将数据转储到 S3 中,然后推送到 elasticsearch。
我至少在理论上看到了将数据从 Redshift 传输到 Elasticsearch 的 2 种可能方法:
- Logstash,使用 JDBC input plugin
- elasticsearch-jdbc
- 不要对卸载的数据进行 gzip 压缩。
- 在弹性上使用批量加载
- 在批量加载中使用大量记录 (>5000) – 较少的大批量
负载比更小的负载更好。
- 使用 AWS 弹性搜索时,存在达到批量队列大小限制的风险。
- 在 lambda 中处理单个文件,然后使用事件递归调用 lambda 函数
- 在递归之前等待几秒钟 –> setTimeout。等待时确保您没有闲置 30 秒,因为您的 lambda 将停止。
- 不要使用 s3 对象创建来触发你的 lambda——你最终会得到
同时调用多个 lambda 函数。
- 不要费心尝试将 kinesis 放在中间 - 卸载数据
进入运动几乎肯定会达到运动中的负载限制。
- 用类似的东西监控你的弹性搜索批量队列大小
这个:
curl https://%ES-SERVER:PORT%/_nodes/stats/thread_pool |jq
‘.nodes |to_entries[].value.thread_pool.bulk’
我正在研究与 Amazon elasticsearch service.For 有关的东西,我需要从 Amazon 获取数据 Redshift.The 要传输的数据很大,即 100 GB.Is 无论如何直接从 Redshift 获取它还是像 Redshift->s3->elasticsearch 这样的两步过程?
看起来没有直接的数据传输管道可以将数据从 Redshift 推送到 elasticsearch。一种替代方法是先将数据转储到 S3 中,然后推送到 elasticsearch。
我至少在理论上看到了将数据从 Redshift 传输到 Elasticsearch 的 2 种可能方法:
- Logstash,使用 JDBC input plugin
- elasticsearch-jdbc
- 不要对卸载的数据进行 gzip 压缩。
- 在弹性上使用批量加载
- 在批量加载中使用大量记录 (>5000) – 较少的大批量 负载比更小的负载更好。
- 使用 AWS 弹性搜索时,存在达到批量队列大小限制的风险。
- 在 lambda 中处理单个文件,然后使用事件递归调用 lambda 函数
- 在递归之前等待几秒钟 –> setTimeout。等待时确保您没有闲置 30 秒,因为您的 lambda 将停止。
- 不要使用 s3 对象创建来触发你的 lambda——你最终会得到 同时调用多个 lambda 函数。
- 不要费心尝试将 kinesis 放在中间 - 卸载数据 进入运动几乎肯定会达到运动中的负载限制。
- 用类似的东西监控你的弹性搜索批量队列大小 这个:
curl https://%ES-SERVER:PORT%/_nodes/stats/thread_pool |jq ‘.nodes |to_entries[].value.thread_pool.bulk’