问题标签 [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.
python - 使用 ETL 进行聚合
我一直无法找到任何直接的答案,所以我想我会在这里问。
可以使用 ETL(例如 AWS Glue)来执行聚合以在任意时间范围内将数据的分辨率降低到 AVG、MIN、MAX 等?
例如 - 给定过去一个月的 2000 多个室外温度数据点,使用 ETL 作业将该分辨率降低到过去一个月的 30 个日平均值数据点。(这些数据的实际用例除外,只是一个例子)。
这个想法是执行聚合以降低数据的分辨率,以使图表、图形等更快地显示大型数据集的长时间范围,因为我们不需要每个单独的数据点,然后我们必须动态聚合这些图表和图形。
到目前为止,我的研究仅表明 ETL 用于数据的 1 对 1 转换,而不是 1000 对 1。似乎 ETL 更多地用于将数据转换为适当的结构以存储在数据库中,而不是用于聚合大型数据集。
我可以使用 ETL 来解决我的聚合需求吗?这将是非常大规模的,使用 AWS 和 Python 实现。
amazon-web-services - 通过 AWS Glue Crawler 识别并存储在数据目录中的表的异常
我正在努力建立公司的新数据湖,并试图找到在这里工作的最佳和最新选择。所以,我找到了一个很好的解决方案来使用 EMR + S3 + Athena + Glue。
我做的过程是:
1 - 运行 Apache Spark 脚本以在 Orc 存储的 S3 中生成按日期划分的 3000 万行。
2 - 运行 Athena 查询以创建外部表。
3 - 检查与 Glue 数据目录连接的 EMR 表,它运行良好。Spark 和 Hive 都可以访问。
4 - 在按日期分区的其他文件夹中生成另外 3000 万行。兽人格式
5 - 运行识别新表的 Glue Crawler。添加到数据目录中,Athena 能够进行查询。但 Spark 和 Hive 无法做到这一点。请参阅下面的异常:
火花
Caused by: java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.hive.ql.io.orc.OrcStruct
蜂巢
Error: java.io.IOException: org.apache.hadoop.hive.ql.metadata.HiveException: Error evaluating audit_id (state=,code=0)
我正在检查是否有任何序列化问题,我发现了这个:
手动创建的表(配置):
输入格式 org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
输出格式 org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
Serde 序列化库org.apache.hadoop.hive.ql.io.orc.OrcSerde
orc.compress SNAPPY
使用 Glue Crawler 创建的表格:
输入格式 org.apache.hadoop.mapred.TextInputFormat
输出格式org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
Serde 序列化库org.apache.hadoop.hive.ql.io.orc.OrcSerde
因此,这不适用于从 Hive 或 Spark 读取。它适用于雅典娜。我已经更改了配置,但在 Hive 或 Spark 上没有效果。
有人遇到过这个问题吗?
amazon-web-services - 在同一个工具下同步所有数据操作
在我的公司,我们让 Pentaho Kettle 每天都在做我们的 ETL 工作(一台机器足以处理我们拥有的所有数据),这意味着:
- 从不同的,主要是关系数据库、电子表格和 API 读取数据
- 应用转换,并将数据插入 Redshift
- 对外部 SAAS 工具进行 API 调用
我们计划用更高级的工具重做它,这将使我们能够:
- 比每天一次更频繁地更新 dw
- 更容易获取数据并将数据推送到我们使用的 SAAS API(在 Pentaho 中处理和组合 JSON 很痛苦)
- 启用在工作流中触发其他工作负载(例如 python 脚本)
- 同步在 EC2 机器上运行的机器学习管道
- 准备好在一年内实现 5 倍的数据规模(其中 1 台机器可能还不够)
我想到的是 Luigi 或 Airflow 作为工作流管理器,并使用 python 执行基于代码的 ETL?由于我们的整个基础设施都在 AWS 云上,我看到 AWS Glue 现在也作为一个选项出现(我不知道它是否仅用于 etl,或者也可以用于我们计划包含的其他流程)
还有其他解决方案吗?有没有人有使用这些的经验(特别是他们如何使用 redshift、s3,可能在未来的 spark/kinesis 工作负载中触发)?
如果是,有哪些可以使用的库,以及一个开始和学习的好地方?
amazon-web-services - 从 AWS Redshift 到 S3 的 AWS Glue ETL 作业失败
我正在尝试使用 AWS Glue 服务来 ETL 一些从 redshift 到 S3 的数据。爬虫成功运行并在数据目录中创建元表,但是当我运行 ETL 作业(由 AWS 生成)时,它在大约 20 分钟后失败,说“资源不可用”。
我看不到在 Cloudwatch 中创建的 AWS 粘合日志或错误日志。当我尝试查看它们时,它显示“找不到日志流。找不到日志流 jr_xxxxxxxxxx。检查它是否正确创建并重试。”
如果您能提供任何指导来解决此问题,我将不胜感激。
amazon-web-services - 在 AWS Glue pySpark 脚本中使用 SQL
我想使用 AWS Glue 将一些 csv 数据转换为 orc。
我创建的 ETL 作业生成了以下 PySpark 脚本:
它获取 csv 数据(从 Athena 表 tests.test_glue_csv 指向的位置)并输出到s3://glue/output/
.
如何在此脚本中插入一些 SQL 操作?
谢谢
amazon-web-services - AWS 在 VPC 中访问 Redshift
我正在尝试使用 AWS Glue 将数据从 Redshift 实例(在 VPC 中)传输到 S3 存储桶。为此,我创建了一个与 Redshift 的 JDBC 连接。
爬虫成功地从 Redshift 获取模式信息到数据目录。但是当我运行 ETL 作业时,它无法获取数据并显示“资源不可用”
- 我是否需要为 Glue 配置 NAT 才能连接到 Redshift?(目前它没有 NAT)
- 即使没有 NAT,爬虫如何能够从 Redshift 读取模式信息?
amazon-web-services - 未创建 AWS CloudWatch 日志
我正在尝试使用 AWS Glue 运行将数据从 Redshift 提取到 S3 的 ETL 作业。
当我运行爬虫时,它成功连接到 Redshift 并获取架构信息。相关日志在日志组 aws-glue/crawlers 下创建。
当我运行 ETL 作业时,它应该在日志组 aws-glue/jobs/output 和 aws-glue/jobs/error 下创建一个日志流,但它无法创建这样的日志流,最终作业也失败了。
(我正在为 Glue 服务使用 AWS 托管的 AWSGlueServiceRole 策略)
由于它不产生任何日志,因此很难确定 ETL 作业失败的原因。如果您能帮我解决这个问题,我将不胜感激。
python - AWS Glue Dynamobd 连接超时错误
对于上述 aws 胶水作业脚本,我收到以下错误
任何想法为什么会发生这种情况?
amazon-web-services - AWS Glue 需要很长时间才能完成
我只是运行一个非常简单的工作如下
数据结构也很简单
当我运行作业测试时,需要 12 到 16 分钟才能完成。但云观察日志显示,该作业需要 2 秒才能显示我的所有数据。
所以我的问题是:AWS Glue 作业将其时间花在了哪些地方,超出了日志记录可以显示的范围,它在日志记录期间之外做什么?
amazon-web-services - AWS Glue S3 VPC 终端节点策略问题
当我为 AWS Glue 服务创建 S3 VPC 终端节点以从 redshift 集群卸载数据时,ETL 作业仅在 VPC 终端节点策略设置为“完全访问”时才有效。
IE
当策略设置为“自定义”并进行如下修改时,它不起作用。
在 ETL 作业中,我已将 examplebucket 指定为保存 ETL 脚本和临时文件的位置,因此我很难理解为什么 ETL 作业仅在策略设置为自定义时才会失败。Glue 是否尝试访问作业中指定存储桶以外的其他 S3 资源?