Snowflake cloud data platform Snowpipe自动摄取配置看起来会触发所有管道
我不熟悉Snowflake data warehouse,希望使用snowpipe加载数据,并从外部阶段(S3 bucket)自动摄取数据,该阶段包含多个文件夹(每个数据库一个),这些文件夹中有多个文件,每个表一个。不同文件夹中的文件将在不同的时间更新,我目前正在使用自动摄取转到S3到SQS到Snowpipe 我的示例S3 bucket设置如下:Snowflake cloud data platform Snowpipe自动摄取配置看起来会触发所有管道,snowflake-cloud-data-platform,snowflake-pipe,Snowflake Cloud Data Platform,Snowflake Pipe,我不熟悉Snowflake data warehouse,希望使用snowpipe加载数据,并从外部阶段(S3 bucket)自动摄取数据,该阶段包含多个文件夹(每个数据库一个),这些文件夹中有多个文件,每个表一个。不同文件夹中的文件将在不同的时间更新,我目前正在使用自动摄取转到S3到SQS到Snowpipe 我的示例S3 bucket设置如下: myS3bucket.s3amazonaws.com /db1 account.csv product.csv
myS3bucket.s3amazonaws.com
/db1
account.csv
product.csv
/db2
invoice.csv
employees.csv
我目前的理解是,我将为每个表创建一个管道,这样account.csv将与一个管道相关,该管道将填充account表,然后product.csv将与另一个管道相关,以填充产品表等
目前,如果我将新文件添加到bucket中,所有管道都会被触发,因为通知在bucket中
我的问题是:
- 添加新文件时触发所有管道是否正确?我是否需要将db1和db2设置为不同的外部阶段,以便如果我向db1文件夹添加一个文件,那么只读取链接到该外部阶段的管道
- 我读过SNS可以使用,但不确定它是如何用于滑雪管的。S3是否发送了一条消息,以便它能够确定调用哪个管道并将消息扇出到该管道
- 有没有更好的方法来解决这个问题,然后我用上面的方法
感谢您提供的帮助如果您的阶段包含文件路径,那么当S3发送一条消息表示已添加文件时,Snowflake将计算出哪些阶段受到影响,因此只有指向该文件夹的管道才会拉入该文件 如果您有三个管道和三个阶段,并且这些阶段指向以下文件夹:
- 1:
blahblah
- 2:
blahblah/db1
- 3:
blahblah/db2
然后,当在
blahblah/db1
中创建文件时,它将触发管道1和2,但不会触发管道3。如果您的阶段包括文件路径,那么当S3发送消息表示已添加文件时,Snowflake将确定哪些阶段受到影响,因此只有指向该文件夹的管道才会拉入文件
如果您有三个管道和三个阶段,并且这些阶段指向以下文件夹:
- 1:
blahblah
- 2:
blahblah/db1
- 3:
blahblah/db2
然后,当在
blahblah/db1
中创建文件时,它将触发管道1和2,但不会触发管道3。当使用自动摄取雪花创建每个雪花帐户的SQS时,来自S3的所有通知都将转到该SQS,然后根据每个管道的阶段定义(桶和路径)传递到每个管道。如果阶段在路径中有重叠,SQS可能会将通知传递给多个管道
请参阅“AmazonS3自动Snowpipe”文档中“创建启用自动摄取的管道”下的“重要”部分
当使用“自动摄取雪花”为每个雪花帐户创建一个SQS时,来自S3的所有通知都会发送到同一个SQS,然后根据每个管道的阶段定义(桶和路径)传递到每个管道。如果阶段在路径中有重叠,SQS可能会将通知传递给多个管道 请参阅“AmazonS3自动Snowpipe”文档中“创建启用自动摄取的管道”下的“重要”部分