【问题标题】:How data retrieved from metadata created tables in Glue Script从元数据检索的数据如何在 Glue 脚本中创建表
【发布时间】:2020-08-22 23:01:55
【问题描述】:

在 AWS Glue 中,虽然我阅读了文档,但我没有弄清楚一件事。以下是我的理解。

关于爬虫:这将为 S3 或 DynamoDB 表创建元数据表。但我不明白的是:Scala/Python 脚本如何使用元数据创建的表从实际源(比如DynamoDB or S3)检索数据。

val input = glueContext
      .getCatalogSource(database = "my_data_base", tableName = "my_table")
      .getDynamicFrame()

上述行是否通过元数据表从实际来源检索数据?

如果有人能够在幕后解释我通过元数据表在 Glue 脚本中检索数据,我会很高兴。

【问题讨论】:

    标签: amazon-web-services aws-glue


    【解决方案1】:

    当您运行 Glue 爬虫时,它将从 S3 或 JDBC(取决于您的要求)获取元数据并在 AWS Glue 数据目录中创建表。

    现在,如果您想从 Glue ETL 作业连接到此数据/表格,那么您可以根据您的要求以多种方式进行:

    1. [from_options][1] : 如果您想直接从 S3/JDBC 加载而不连接到 Glue 目录。

    2. [from_catalog][1] :如果要从 Glue 目录加载数据,则需要使用 getCatalogSource 方法将其与目录链接,如代码所示。顾名思义,它将使用 Glue 数据目录作为源并加载您传递给此方法的特定表。

    一旦查看指向某个位置的表定义,它就会建立连接并加载源中存在的数据。

    是的,如果您想从 Glue 目录加载表格,您需要使用 getCatalogSource

    1. Catalog 是否会查看 Crawler 并参考实际的源和加载数据?

    查看此 [链接][2] 中的图表。它会让您对流程有所了解。

    1. 如果爬虫在我运行 getCatalogSource 之前被删除了,我还能在这种情况下加载数据吗?

    Crawler 和 Table 是两个不同的组件。这完全取决于何时删除表。如果您在作业开始执行后删除表,则不会有任何问题。如果在执行开始之前删除它,则会遇到错误。

    1. 如果我的源有数百万条记录怎么办?那么这将加载所有记录还是在这种情况下如何加载?

    最好在源代码中包含大文件,这样可以避免大多数小文件问题。基于 Spark 的 Glue,它将读取可以放入内存的文件,然后进行计算。查看此 [answer][3] 和 [this][4] 以了解在 AWS Glue 中读取较大文件时的最佳实践。 [1]:https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-dynamic-frame-reader.html [2]:https://docs.aws.amazon.com/athena/latest/ug/glue-athena.html [3]:https://stackoverflow.com/questions/46638901/how-spark-read-a-large-file-petabyte-when-file-can-not-be-fit-in-sparks-main [4]:https://aws.amazon.com/blogs/big-data/optimize-memory-management-in-aws-glue/#:~:text=Incremental%20processing:%20Processing%20large%20datasets

    【讨论】:

    • 从您的回答中,我有 3 个疑问。 1) Catalog 是否查看 Crawler 并参考实际源和加载数据? 2)如果爬虫在我运行getCatalogSource之前被删除了,那么在这种情况下我可以加载数据吗? 3) 如果我的来源有数百万条记录怎么办?那么这将加载所有记录还是在这种情况下如何加载?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    相关资源
    最近更新 更多