我们可以用 Java 为 AWS Glue 编写脚本吗

Posted

技术标签:

【中文标题】我们可以用 Java 为 AWS Glue 编写脚本吗【英文标题】:Can we write script in Java for AWS Glue 【发布时间】:2020-08-21 11:32:07 【问题描述】:

我正在尝试使用 Java 创建作业脚本。在 AWS Glue 控制台中,我只能找到“Python,Spark”,这意味着我们根本无法使用 Java 编写脚本吗?如果是,那么这个 api 是做什么用的:aws-java-sdk-glue

我什至找到了一些例子:https://***.com/questions/48256281/how-to-read-aws-glue-data-catalog-table-schemas-programmatically

在上面,似乎我们也可以用 Java 编写 aws 胶水脚本。谁能确认一下?

编辑: 在 Scala 中,我们写成:glueContext.getCatalogSource(database = "my_data_base", tableName = "my_table")

在 Java 中,我发现下面的类具有方法名称withDatabaseNamewithTableName https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/glue/model/CatalogEntry.html

那么,我可以知道上面这个类的目的是什么吗?

【问题讨论】:

【参考方案1】:

您看到的 Glue 控制台上的语言选项是 yoiu 将编写的脚本/代码,用于提取、转换和加载需要处理的实际数据。源可以是 db 或 s3 存储桶,目标可以是任何内容,具体取决于您的用例。

通常您可以从 AWS 管理控制台创建 Glue 作业或 S3 存储桶,当您不想手动执行此操作时,您需要一个具有 API 调用定义的开发工具包,用于创建 AWS 资源。

因此,Glue 作业中的脚本只能用 python or scala 编写,但在创建 Glue 作业时,您可以使用不同的语言/SDK。

Java - https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/glue/AWSGlueClient.html

Python - https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html

Java 脚本 - https://docs.aws.amazon.com/AWSjavascriptSDK/latest/AWS/Glue.html

鲁比 - https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Glue/Client.html

以上是用于在 AWS 中定义资源的 SDK,请参阅下面的链接,其中包含在 Glue 作业中使用的实际代码。

https://github.com/aws-samples/aws-glue-samples

【讨论】:

谢谢普拉巴卡。我刚刚编辑了我的查询,如果你知道的话,你能回答一下吗.. 你能不能也回答一下这个问题:***.com/questions/63524905/… 感谢您对上述链接的回复,请问您是否知道我在实际帖子中的上述编辑查询?那么 Java 是否也支持 Job 脚本? (基于 CatalogEntry 类)【参考方案2】:

AWS Glue 作业的实际脚本定义不支持 Java。

您所指的 API 是 AWS 开发工具包,可让您创建和管理 AWS Glue 资源,例如创建/运行爬虫、查看和管理胶水目录、创建作业定义等。

因此,您可以使用适用于 Java 的 AWS 开发工具包管理 Glue 服务中的资源,类似于使用适用于 Java 的 AWS 开发工具包管理 EC2、S3、RDS 中的资源。

【讨论】:

谢谢 :) 因为我只能接受一个答案,我接受以上一个,正如他简要解释的那样.. 没有别的.. 希望你不介意......但我为你竖起了大拇指回答.. 没问题,反正他们解释得更好:) 我刚刚编辑了我的查询,如果你知道的话,你能回答一下吗.. 你能不能也回答一下这个问题:***.com/questions/63524905/…

以上是关于我们可以用 Java 为 AWS Glue 编写脚本吗的主要内容,如果未能解决你的问题,请参考以下文章

AWS Glue-如何在 S3 中将动态帧编写为 .txt 文件并使用“|”作为分隔符

如何编写 AWS Glue 脚本以将新数据插入 Redshift 表

手动设置 AWS Glue ETL 书签

使用 Python 在 AWS Glue 中打开和读取文件

AWS Glue 的工作原理是啥?

AWS Spectrum 为 AWS Glue 生成的镶木地板文件提供空白结果