如何解决从元数据中检索数据的方式如何在Glue Script中创建表
在AWS Glue中,尽管我阅读了文档,但是我并没有一窍不通。以下是我的理解。
关于抓取工具:这将为S3或DynamoDB表创建一个元数据表。但是我不明白的是:Scala / Python脚本如何使用元数据创建的表从“实际来源”(例如DynamoDB or S3
)检索数据。
val input = glueContext
.getCatalogSource(database = "my_data_base",tableName = "my_table")
.getDynamicFrame()
以上行是否通过元数据表从实际源中检索数据?
如果有人能够通过元数据表在Glue脚本中检索数据的幕后工作,我将感到很高兴。
解决方法
运行Glue搜寻器时,它将从S3或JDBC中获取元数据(取决于您的要求),并在AWS Glue数据目录中创建表。
现在,如果要从Glue ETL作业连接到此数据/表,则可以根据需要以多种方式进行操作:
-
[from_options] [1]:如果要直接从S3 / JDBC加载而不连接到Glue目录。
-
[from_catalog] [1]:如果要从Glue目录加载数据,则需要使用
getCatalogSource
方法将其与目录链接,如代码所示。顾名思义,它将使用Glue数据目录作为源并加载传递给此方法的特定表。
一旦查看了指向某个位置的表定义,它将建立连接并加载源中存在的数据。
是的,如果要从Glue目录加载表,则需要使用getCatalogSource
。
- 目录是否调查Crawler并引用实际的源和加载数据?
在此[link] [2]中查看图表。它将使您对流程有所了解。
- 如果在运行getCatalogSource之前删除了搜寻器,那么在这种情况下可以加载数据吗?
Crawler和Table是两个不同的组件。这完全取决于删除表的时间。如果在作业开始执行后删除表,则不会有任何问题。如果您在执行开始前将其删除,则会遇到错误。
- 如果我的来源有大量记录,该怎么办?那么这将加载所有记录,或者在这种情况下如何加载?
最好在源中包含大文件,这样可以避免大多数小文件问题。基于Spark的胶水,它将读取可放入内存的文件,然后进行计算。在读取AWS Glue中的较大文件时,请查看此[answer] [3]和[this] [4]以获取最佳实践。 [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 >
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。