【问题标题】:Have any one built a data pipeline using AWS Glue to snowflake? Looking for solutions有没有人使用 AWS Glue 构建数据管道来雪花?寻找解决方案
【发布时间】:2020-04-10 12:08:35
【问题描述】:

我是 AWS 和雪花的新手。 我希望使用 aws 胶将 csv 文件从 S3 加载到相应的雪花表(大约 100 个表)。我能够使用下面的文章将数据加载到 1 个雪花表中

https://support.snowflake.net/s/article/How-to-Set-up-AWS-Glue-ETL-for-Snowflake

是否可以使用 1 个 aws 胶水来加载表列表?

在 AWS Glue 内部 - 我们可以编写逻辑来根据 csv 文件在雪花中更新或插入数据吗?

如有任何示例代码/解决方案,请提供建议并分享。

谢谢, 乔

【问题讨论】:

  • 我知道您专门要求使用 Glue,但就像其他人指出的那样,您可以使用其他不那么密集的工具。我会调查 Snowflake 的 Snowpipe 服务。基本上,您需要在 S3 中设置通知,然后在 Snowflake 中进行一些额外设置,然后 Snowflake 将自动从 S3 中提取新记录,而无需您维护任何作业:docs.snowflake.com/en/user-guide/…

标签: amazon-web-services pyspark snowflake-cloud-data-platform aws-glue aws-glue-data-catalog


【解决方案1】:

首先,如果您不需要 Spark 来处理/转换 CSV 文件中的数据,使用 Snowflake COPY 命令将是一个更好的选择。最后,AWS Glue (Spark) 还会将文件上传到内部阶段,并使用 COPY 命令将数据插入到雪花数据库中。

使用COPY命令加载数据,请查看:

https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html

https://docs.snowflake.com/en/user-guide/data-load-external-tutorial.html

关于您的问题:

是否可以使用 1 个 aws 胶水来加载表列表?

是的,可以使用 1 个 AWS Glue 作业来加载多个表。 AWS Glue 是一种灵活的工具,您可以编写自定义 Spark 代码。另一方面,为简单起见,我建议您对 1 个表使用 1 个作业。

在 AWS Glue 内部 - 我们可以编写逻辑来根据 csv 文件在雪花中更新或插入数据吗?

可以,但 Spark 旨在处理批量数据,而 Snowflake 是一个数据仓库。更新或插入单行对于 Spark 和 Snowflake 来说都是低效的。运行 DML 检查:

https://docs.snowflake.com/en/user-guide/spark-connector-use.html#executing-ddl-dml-sql-statements

【讨论】:

  • 谢谢阿蒂尔。我知道复制命令,但想通过设置 AWS Glue 作业来执行从 s3 到雪花的数据加载来自动化该过程。我们可以运行雪花存储过程来在 spark 代码中执行 upsert 吗?
  • 可以,如果您使用 Scala 编写 AWS Glue 作业(不确定 PySpark)。请检查我回复中的最后一个链接。
  • 另外——我们可以在数据目录中定义源表和目标表并使用 aws 胶水来传递参数吗?
【解决方案2】:

有一个简单的过程可以将数据加载到雪花表中。请参考以下视频。

https://www.youtube.com/watch?v=KslOVvXy1R4&feature=youtu.be

SELECT t.$1 as MONTH_NUM,T.$2 AS MONTH_NAME from @mys3stage (file_format=>'myfileformat')
t; (edited) 

【讨论】:

  • 谢谢 Sunny,我的流程正在进行中,必须每天安排。第一次满载,然后增量加载。
【解决方案3】:

最重要的是,如果您不需要使用 Spark 来处理/更改 CSV 记录中的数据,那么使用 Snowflake COPY 命令将是一个更好的选择。接近尾声时,AWS Glue (Spark) 也会将内部阶段的记录转移,并使用 COPY 命令将数据嵌入到 Snowflake 数据库中。

关于您的查询: 是否可以使用 1 个 aws 胶水来加载表格列表?

确实,可以使用 1 个 AWS Glue 工作来堆叠不同的表格。 AWS Glue 是一种适应性强的工具,您可以编写自定义 Spark 代码。再说一次,为了不费力,我规定你用 1 个职业来做 1 张桌子。

在 AWS Glue 内部 - 我们可以编写逻辑来根据 csv 文件在雪花中更新或插入数据吗?

确实可以,但是 Spark 旨在处理海量数据,而 Snowflake 是一个数据仓库。刷新或嵌入单行对于 Spark 和 Snowflake 来说都是浪费的。

【讨论】:

    猜你喜欢
    • 2020-10-12
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 2021-09-14
    • 1970-01-01
    • 2021-01-17
    • 2011-09-07
    相关资源
    最近更新 更多