我试图写一个lambda函数来加载流数据从AWS kineesis或kineesis消防软管直接到AWS红移,而不使用中间S3桶。如果有人能支持我,请告诉我?
使用COPY命令将高带宽的数据加载到Redshift中。该命令支持将数据直接并行加载到Redshift计算节点,当涉及大量数据时,这是一个巨大的资产。COPY命令支持4种不同的源—S3、DynamoDB、EMR和SSH主机。(在所有4种情况下,如果数据量很大,启用并行加载非常重要)
因此,要使用COPY命令而不使用S3,您将需要配置一些额外的资源,并且不清楚如何将数据移动到Lambda中的任何这些资源中(尽管这绝对可行)。因为我不理解对S3的反对,所以我不能说这些路径中是否有一条能满足您的需求。但是,如果您需要创建另一组计算基础设施来绕过S3,则似乎无法获得有效的解决方案。
(不推荐使用此路径)您可以通过SQL将数据加载到表中—只需将值放入SQL并运行即可。以这种方式加载即使是中等大小的数据也是非常低效的,并且可能会给您带来问题。我警告过你了!INSERT INTO VALUES(…);"有效并将运行。问题是您的数据正在通过红移领导节点和查询编译器运行。恶心!您还将受到64K字符的查询大小限制,并且数据将以纯文本形式写出来,因此每个INSERT只能保存非常有限的数据量。啊!每次INSERT都会分配一个新的块,从而增加了所需的VACUUM工作量。现在就开枪吧!如果你正在使用Kinesis,你的数据可能非常大,所以这也不太可能是你想要的路径。
S3是将数据移动到Redshift中最常用的路径是有原因的。你可能最好问"我们有关注X与S3,有没有一种方法来解决这个问题,而加载数据到Redshift?">