问题标签 [aws-glue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
651 浏览

amazon-web-services - Glue Classifier 无法使用 Gork 模式对 s3 日志进行分类

问题:使用具有正确 gork 模式的分类器运行 Crawler 不会创建包含列的表,而是创建包含 0 列的表并创建 recordCount 0(但 objectCount 为 5)

详细信息:我设置了一个 Glue Crawler 来查看具有 s3-access-logs 的 s3 存储桶。此 Glue Crawler 使用分类器对日志文件中每个条目的列进行分类。

分类器设置有下面的 Gork 模式

当我使用在线 gork 测试仪对其进行测试时,上面的 Gork 模式成功匹配了如下所示的 S3 访问日志

0 投票
1 回答
10714 浏览

python - AWS Glue 将结构转换为动态框架

我对 AWSGlue 有点陌生。我正在使用 AWSGlue 将原始 cloudwatch json 转换为 csv。转换脚本非常简单,但是文档和示例似乎并不全面。数据结构是这样的:

棘手的部分是将其从单个动态帧(标签、字符串、数据点数组)转换为动态帧(时间戳、字符串、总和、双精度、单位、字符串)。我不确定在动态数据框中使用哪种方法。

0 投票
1 回答
1332 浏览

amazon-web-services - AWS Glue 从分区表读取并写入分区表

我的用例很简单。我在 s3 中有 20 TB 原始 csv 未压缩数据,分区文件夹结构为年(10 个分区,10 年,每个分区有 2 TB)。我想将此数据转换为镶木地板格式(快速压缩)并保持类似的分区/文件夹结构。我想要一个在 Athena 中有 10 个 10 个分区的 Parquet 表,我将使用它来按分区查询这些数据,并且以后可能会删除原始 csv 数据。使用 Glue,我似乎将创建 10 个我无法使用的镶木地板。

这在 Glue 中可行吗?我没有使用 EC2,而是 Hive/Spark,我正在寻找简单的解决方案。有什么推荐吗?任何帮助深表感谢。

0 投票
2 回答
2087 浏览

boto3 - 如何通过 boto3 访问我在 eu-west-1 中的 Athena 表的 Athena/Glue 目录?

我需要编写一个使用我的 Athena 数据目录中的数据的作业。我正在使用 Python 和 boto3。由于 Glue 已发布,我似乎使用以下代码通过 Glue API 访问我的数据目录:

但这不适用于 eu-west-1 地区,我猜是因为那里还不支持 Glue。

如何访问我在 eu-west-1 中拥有的 Athena 数据表的数据目录?我认为这应该是可能的,因为它们出现在 UI 中!

从 AWS 论坛交叉发布这个:

https://forums.aws.amazon.com/thread.jspa?threadID=269605

0 投票
3 回答
4838 浏览

aws-glue - 即使有书签,AWS 胶水每次都会将完整数据从源复制到目标

我有一个从 aws 胶水控制台中的向导生成的胶水作业。我没有在生成任务时更改默认脚本。它从 posgres 数据库表(源)中获取数据并写入另一个 postgres 数据库(目标)。我在 ide 中选择了启用书签。每当任务运行时,即使源中没有插入、更新或删除,它也会将完整的源数据库表复制到目标表。我了解启用书签后,它应该只复制上次运行时源中的更改,但这并没有发生。因此,如果源表中有 4 行,则每次任务运行时,它都会将所有 4 行添加到目标中,并且目标的行数增加 1。如何让它只处理最后一个源数据的变化跑?更远,它是如何添加书签的?如果在 2 次运行之间修改了一行(更新 sql 语句),它将如何只“更新”正确的行?

0 投票
1 回答
1657 浏览

python - AWS Glue:如何通过 SCALA 中的 spark 对象读取 jdbc 源。

我正在尝试执行以下操作。

通过 jdbc 从数据库中读取数据。在 pyspark 中,我可以使用以下语法来做到这一点。

现在我想在SCALA中做类似的事情。

我尝试了以下方法:

但我收到以下错误。

java.sql.SQLRecoverableException IO 错误:网络适配器无法建立连接

我不想使用胶水 api 提供的爬虫而不是 getSource 方法。任何帮助,将不胜感激。

0 投票
2 回答
7139 浏览

pyspark - AWS Glue PySpark 替换 NULL

我正在运行 AWS Glue 作业,使用 Glue 自动生成的 PySpark 脚本将 S3 上的管道分隔文件加载到 RDS Postgres 实例中。

最初,它抱怨某些列中的 NULL 值:

在对 SO 进行一些谷歌搜索和阅读之后,我尝试通过将我的 AWS Glue 动态数据帧转换为 Spark 数据帧、执行函数fillna()并重新转换回动态数据帧来替换文件中的 NULL。

参考:

https://github.com/awslabs/aws-glue-samples/blob/master/FAQ_and_How_to.md#3-there-are-some-transforms-that-i-cannot-figure-out

如何在 Pyspark 中替换数据框的所有 Null 值

http://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrame.fillna

现在,当我运行我的工作时,它会引发以下错误:

我是 Python 和 Spark 的新手,已经尝试了很多,但无法理解这一点。感谢一些专家的帮助。

我尝试将我的 reconvert 命令更改为:

但仍然得到错误:

更新:我怀疑这与 NULL 值无关。消息“Can't get JDBC type for null”似乎不是指 NULL 值,而是 JDBC 无法破译的某些数据/类型。

我创建了一个只有 1 条记录的文件,没有 NULL 值,将所有布尔类型更改为 INT(并将值替换为 0 和 1),但仍然得到相同的错误:

更新:确保导入 DynamicFrame(从 awsglue.context import DynamicFrame),因为 fromDF / toDF 是 DynamicFrame 的一部分。

请参阅https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-dynamic-frame.html

0 投票
0 回答
1128 浏览

amazon-web-services - AWS GLUE 错误爬虫

我运行了一个爬虫,它给了我以下错误:

某些文件与检测到的架构不匹配。从爬虫中删除或排除以下文件:

这些文件被压缩gz并位于s3. 所有文件都具有相同的格式,例如:

MSC,LL,150635,1142323,702551687172,,,,,,,,20170207,000356,0,MAD06Q1 1R15AI0,EAIMX2I,,,,,,,,,1,0,2,

请问有关如何解决此错误的任何想法?

0 投票
1 回答
2277 浏览

python - Boto3 Athena 未显示所有表格

尝试使用 BOTO3 python 获取 Athena Table 中的表名列表。

这是我的代码;我认为我尝试做分页器是不正确的。任何帮助表示赞赏

0 投票
3 回答
9217 浏览

amazon-web-services - 如何让 AWS Glue 爬虫在另一个 AWS 账户中担任角色以从该账户的 S3 存储桶中获取数据?

我需要在属于第三方的一系列 AWS 账户的 S3 存储桶中获取一些 CSV 数据文件;其他帐户的所有者在每个帐户中创建了一个角色,授予我访问这些文件的权限;我可以使用 AWS Web 控制台(登录到我自己的帐户)切换到每个角色并获取文件。一次一个,我切换到每个帐户的角色,然后获取该帐户的文件,然后转到下一个帐户并获取这些文件,依此类推。

我想自动化这个过程。

看起来 AWS Glue 可以做到这一点,但我在权限方面遇到了问题。

我需要它做的是创建权限,以便 AWS Glue 爬虫可以切换到正确的角色(属于每个其他 AWS 账户)并从这些账户的 S3 存储桶中获取数据文件。

这可能吗?如果可以,我该如何设置?(例如,需要哪些 IAM 角色/权限?)如果可能的话,我宁愿将更改限制在我自己的帐户中,而不必要求其他帐户所有者在他们这边进行更改。

如果 Glue 无法做到这一点,是否有其他简单的方法可以使用不同的 AWS 服务来做到这一点?

谢谢!

(我已经进行了一系列尝试,但我一直弄错 - 我的尝试远非正确,因此我在此处发布详细信息毫无意义)。