问题标签 [aws-glue-data-catalog]
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.
amazon-web-services - 如何在 AWS 胶水中检查 Spark 和 Hadoop 的版本?
我将 AWS 与(基本支持计划)一起使用。我想知道在 AWS 粘合作业中使用了哪个版本的 Spark 和 Hadoop (HDFS)。这样我就可以在本地机器上设置相同的环境进行开发。
或者,如果我了解 Spark 的版本,则对应 AWS 胶水作业使用哪个版本的 Hadoop,反之亦然。
因为我正在使用基本支持计划。所以,我不能向支持中心提出案例。知道我可以在哪里签入 AWS 胶水作业……Spark 和 Hadoop 版本吗?
任何形式的帮助和建议表示赞赏。谢谢!
amazon-s3 - 使用 aws 胶合并来自 ec2 的表
我在自己的 ec2 实例上有两个 mysql 数据库。每个数据库在模式“产品”下都有一个表“报告”。我使用爬虫将表模式获取到名为 db1 的数据库中的 aws 胶水数据目录中。然后我使用 aws 胶将表从 ec2 实例复制到 s3 存储桶中。然后我用红移查询表。我在查询编辑器中使用下面的脚本将外部模式从 aws 爬虫获取到红移。我想将这两个表合并到一个表中,并添加一个带有标志的“源”列,以指示每条记录来自的原始表。有谁知道在 etl 过程中是否可以使用 aws 胶水来做到这一点?或者你能建议另一种解决方案吗?我知道我可以在 redshift 中将它们与 sql 联合,但我的最终目标是创建一个 etl 管道,在它到达 redshift 之前执行此操作。
脚本:
amazon-s3 - 使用胶水从 ec2 mysql 获取数据到 redshift
我正在尝试从 ec2 实例上的 mysql 数据库中提取表到 s3 以在 redshift 中查询。我当前的管道是我使用 aws 胶水爬虫爬取 mysql 数据库表以获取数据目录中的架构。然后我设置了一个 aws etl 作业来将数据拉入一个 s3 存储桶。然后我再次使用另一个爬虫爬取 s3 存储桶中的数据,以将 s3 存储桶中的数据的架构获取到数据目录中,然后在 redshift 查询窗口中运行下面的脚本以将架构拉入 redshift。好像步骤很多。有没有更有效的方法来做到这一点?例如,有没有一种方法可以重用第一个爬虫的模式,这样我就不必两次爬取数据。它是相同的表和列。
脚本:
amazon-web-services - AWS Glue 作业书签为 csv 文件生成重复项
我们每天上午 11 点从供应商的 s3 存储桶中收到 1 个 csv 文件。我在上午 11:30 使用 Glue 将此文件转换为镶木地板格式。
我已启用作业书签以不处理已处理的文件。尽管如此,我看到一些文件正在被重新处理,从而产生重复。
我阅读了这些问题和答案AWS Glue 书签为 PARQUET和AWS Glue 作业书签生成重复项说明
他们很好地理解了工作书签,但仍然没有解决这个问题。
AWS 文档说,它支持 CSV 文件为AWS 文档添加书签。
想知道是否有人帮助我了解可能是什么问题以及可能的解决方案:)
编辑:
按照 Prabhakar 的要求在此处粘贴示例代码。
amazon-web-services - AWS Glue Crawler 可以处理同一文件夹中的不同文件类型吗?
我已按以下结构向 S3 提交报告:
YYYY MM DD 每天都在变化。文件名中的 YYYMMDD 在那里,因为文件在移动到 S3 之前都进入服务器上的一个目录。
我希望有 1 或 3 个爬虫,它们将 3 个表传送到目录,每种类型的报告一个。这可能吗?我似乎无法指定
我可以编写一个不包括 SearchReport 和 TimingReport 的爬虫,因此只爬取 UsageReport。这是最好的方法吗?
还是我必须完全重新做存储桶/文件夹/文件名设计?
aws-glue - 如何访问分区 Athena 表的子目录中的数据
我有一个 Athena 表,每天都有一个分区,其中实际文件按小时位于“子目录”中,如下所示:
Athena 能够毫无问题地查询此表并找到我的数据,但在使用 AWS Glue 时,它似乎无法找到此数据。
我已经尝试将分区的位置更改为以斜杠 ( s3://my-bucket/data/2019/06/27/01/
) 结尾,但这没有帮助。
以下是 Glue 中的分区属性。我希望 storedAsSubDirectories 设置会告诉它迭代子目录,但情况似乎并非如此:
当 Glue 针对同一个分区/表运行时,它会找到 0 行。
但是,如果所有数据文件都出现在分区的根“目录”中(即 s3://my-bucket/data/2019/06/27/00001.json),那么 Athena 和 Glue 都可以找到数据。
Glue无法找到数据文件是否有某些原因?我不希望每小时创建一个分区,因为这意味着每年有 8700 个分区(而 Athena 的每个表限制为 20,000 个分区)。
amazon-web-services - 无法创建胶水连接
我在 AWS Glue 中设置了到 RDS 数据库的 JDBC 连接。当我从 AWS 控制台测试连接时,我收到一个错误:找不到子网 ID xxxx 的 S3 端点或 NAT 网关。为什么 AWS Glue 连接到 RDS 需要 S3 VPC Endpoint?
RDS 实例有一个对所有 IP 地址完全开放的安全组。
json - AWS Glue:从具有混合数据的 Datalake(S3) 导入 JSON
我目前正在努力了解如何创建我们的数据湖的数据目录(=Source)。
背景:
我们有一个事件驱动的架构,并开始将我们的应用程序产生的所有事件存储到数据湖(S3 Bucket)中。在存储事件之前,我们对其进行清理(删除敏感信息)并在每个事件周围添加一个包含一些通用数据的信封:
- 事件来源(哪个应用程序生成了事件)
- 事件类型(产生了什么样的事件)
- 时间戳(事件何时生成)
- ...
使用 Kinesis Streams 和 Firehose,我们将这些事件批处理在一起,并将它们作为 JSON 文件存储在 S3 存储桶中。存储桶的结构如下://///
在那里,我们将带有信封的批处理事件存储为 JSON 文件。这意味着一个 JSON 文件包含多个事件:
数据对象包含事件的特定数据。
现在我想我可以使用 AWS Glue 挂钩原始数据并使用 ETL 作业来聚合事件数据。据我了解,我需要为我的源数据建立一个数据目录,这就是我正在努力解决的问题,因为 JSON 总是包含不同的事件,这些事件是一起批处理的。标准的“爬虫”无法处理这个问题。它确实可以,但它会根据每个 JSON 文件创建无意义的模式。
我想要达到的目标:
- 解析数据湖以过滤出我感兴趣的事件
- 使用我感兴趣的事件并对其进行一些转换/聚合/计算
- 将结果存储到我们当前的 Analytics RDS 或任何地方(足以满足我们现在的目的)
- 每天解析新事件并将其插入/附加/更新到我们的分析 rds
我的问题:
- 在我们的数据湖中使用胶水的最佳方式是什么?
- 是否有可能将爬虫与自定义分类器和某种过滤器与我们的数据湖一起使用?
- 我是否需要在之前转换数据,才能真正使用 AWS 胶水?
aws-glue - 来自 AWS Secret Manager 的 AWS Glue 连接
在 AWS Glue 中创建 JDBC 连接时,有没有办法从 AWS 机密管理器获取密码,而不是手动硬编码?
amazon-s3 - 创建有权在 redshift 中查看的用户
我正在从 mysql ec2 实例中提取数据到 s3 存储桶,然后在 redshift 中创建视图。我想创建只能查询和查看在 Redshift 中专门为他们创建的某些视图的数据库用户。下面的示例代码用于创建用户、查看和授予访问权限。我遇到的问题是我还必须授予对创建视图的基础架构的访问权限,这意味着用户可以查看和查询该架构中的表。用户还可以看到数据库中的其他模式,甚至是他们无法查询的模式。有没有办法只授予用户特定视图,并使其看不到他们无权访问的其他模式?
代码: