问题标签 [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 回答
610 浏览

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

我们正在使用 AWS Glue 构建 ETL。为了优化查询性能,我们将数据存储在 apache parquet 中。一旦数据以镶木地板格式保存在 S3 上。我们正在使用 AWS Spectrum 来查询该数据。

我们成功地在我们的开发 AWS 账户上测试了整个堆栈。但是当我们转移到我们的生产 AWS 账户时。我们遇到了一个奇怪的问题。当我们查询时返回行,但数据是空白的。 在此处输入图像描述

虽然 count 查询返回一个好数字 在此处输入图像描述

经过进一步调查,我们了解到开发 AWS 账户中的 apache parquet 文件是 RLE 编码的,而生产 AWS 账户中的文件是 BITPACKED 编码的。为了使这种情况更强大,我想将 BITPACKED 转换为 RLE 并查看我是否能够查询数据。

我对镶木地板文件很陌生,在转换编码方面找不到太多帮助。任何人都可以告诉我这样做的方法。

目前我们的主要怀疑是不同的编码。但如果你能猜到任何其他问题。我很乐意探索各种可能性。

0 投票
8 回答
13050 浏览

amazon-web-services - AWS Athena 从 S3 的 GLUE Crawler 输入 csv 创建的表中返回零记录

第一部分 :

我尝试在 s3 中加载的虚拟 csv 上运行胶水爬虫,它创建了一个表,但是当我尝试在 athena 中查看表并查询它时,它显示返回了零记录。

但是 Athena 中 ELB 的演示数据运行良好。

第二部分(场景:)

假设我有一个 excel 文件和数据字典,说明该文件中数据的存储方式和格式,我希望将这些数据转储到 AWS Redshift 中实现此目的的最佳方法是什么?

0 投票
1 回答
1413 浏览

amazon-web-services - 无法将 aws-glue 脚本存储在具有加密策略的 S3 存储桶中

我们可以使用 AES 加密将 aws-glue 脚本存储在 S3 Bucket 中吗?

我们有强制执行 AES 加密的存储桶策略。除非文件被加密,否则无法上传文件。

创建简单的 aws-glue 作业时,我似乎无法将脚本保存在加密的存储桶中。

我通过删除存储桶策略确认对存储桶的访问,并且可以保存脚本。

我们的标准是强制执行 S3 服务器端加密。有没有办法保存脚本在保存时加密?

脚本库服务器端加密选项

0 投票
2 回答
2558 浏览

amazon-web-services - AWS Glue ETL 作业失败并出现 AnalysisException: u'Unable to infer schema for Parquet。必须手动指定。;'

我正在尝试创建 AWS Glue ETL 作业,它将数据从存储在 S3 中的镶木地板文件加载到 Redshift 表中。Parquet 文件是使用带有“简单”文件模式选项的 pandas 写入到 S3 bucked 中的多个文件夹中的。布局如下所示:

s3://bucket/parquet_table/01/file_1.parquet

s3://bucket/parquet_table/01/file_2.parquet

s3://bucket/parquet_table/01/file_3.parquet

s3://bucket/parquet_table/01/file_1.parquet

s3://bucket/parquet_table/02/file_2.parquet

s3://bucket/parquet_table/02/file_3.parquet

我可以使用 AWS Glue Crawler 在 AWS Glue 目录中创建一个表,并且可以从 Athena 查询该表,但是当我尝试创建将同一个表复制到 Redshift 的 ETL 作业时它不起作用。

如果我抓取单个文件或抓取一个文件夹中的多个文件,它会起作用,只要涉及多个文件夹,就会出现上述错误

AnalysisException: u'Unable to infer schema for Parquet. It must be specified manually.;'

如果我使用“hive”而不是“简单”模式,则会出现类似问题。然后我们有多个文件夹以及抛出的空镶木地板文件

java.io.IOException: Could not read footer: java.lang.RuntimeException: xxx is not a Parquet file (too small)

在使用 AWS Glue(ETL 和数据目录)时,是否有一些关于如何读取 Parquet 文件并将它们构建在 S3 中的建议?

0 投票
2 回答
6053 浏览

amazon-web-services - 调度从 AWS Redshift 到 S3 的数据提取

我正在尝试构建一个从 Redshift 提取数据并将相同数据写入 S3 存储桶的工作。到目前为止,我已经探索了 AWS Glue,但 Glue 无法在 redshift 上运行自定义 sql。我知道我们可以运行卸载命令并且可以直接存储到 S3。我正在寻找一种可以在 AWS 中进行参数化和安排的解决方案。

0 投票
1 回答
3209 浏览

amazon-web-services - AWS Glue 基于文件名的自定义爬虫

所以我想做的是使用 AWS Glue 抓取 S3 存储桶上的数据。存储为嵌套 json 和路径的数据如下所示:

当运行默认爬虫(无自定义分类器)时,它会根据路径对其进行分区并按预期反序列化 json,但是,我想从文件名中获取时间戳以及在单独的字段中。目前,Crawler 忽略了它。

例如,如果我在以下位置运行爬虫:

我得到这样的表模式:

  • 分区 1:10001
  • 分区 2: fromage
  • 数组:JSON 数据

我确实尝试添加基于 Grok 模式的自定义分类器:

在此处输入图像描述

但是,每当我重新运行爬虫时,它都会跳过自定义分类器并使用默认的 JSON 分类器。作为一种解决方案,显然我可以在运行爬虫之前将文件名附加到 JSON 本身,但想知道我是否可以避免这一步?

0 投票
1 回答
3590 浏览

amazon-web-services - 对于 s3 上的大型输入 csv 数据,AWS Glue 作业失败

对于小型 s3 输入文件 (~10GB),粘合 ETL 作业可以正常工作,但对于较大的数据集 (~200GB),该作业会失败。

添加部分ETL代码。

作业执行 4 小时并抛出错误。

文件“script_2017-11-23-15-07-32.py”,第 49 行,在 partitioned_dataframe.write.partitionBy(['part_date']).format("parquet").save(output_lg_partitioned_dir, mode="append" )文件“/mnt/yarn/usercache/root/appcache/application_1511449472652_0001/container_1511449472652_0001_02_000001/pyspark.zip/pyspark/sql/readwriter.py”,第550行,保存文件“/mnt/yarn/usercache/root/appcache/application_1511014974 /container_1511449472652_0001_02_000001/py4j-0.10.4-src.zip/py4j/java_gateway.py”,第 1133 行,通话中文件“/mnt/yarn/usercache/root/appcache/application_1511449472652_0001/container_1511449472652_0001_02_000001/pyspark.zip/pyspark/sql/utils.py”,第 63 行,在 deco 文件“/mnt/yarn/usercache/root/appcache/application_15114494726 container_1511449472652_0001_02_000001/py4j-0.10.4-src.zip/py4j/protocol.py”,第 319 行,在 get_return_value py4j.protocol.Py4JJavaError:调用 o172.save 时出错。:org.apache.spark.SparkException:作业中止。在 org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1.apply$mcV$sp(FileFormatWriter.scala:147) 在 org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun $write$1.apply(FileFormatWriter.scala:121) at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1.apply(FileFormatWriter.scala:

日志类型结束:stdout

如果您能提供任何指导来解决此问题,我将不胜感激。

0 投票
1 回答
4553 浏览

python-3.x - AWS Glue - 不知道如何将 NullType 保存到 REDSHIFT

我有以下 AWS Glue 的简单脚本。我有一个包含空单元格的文本文件和一个接受 NULL 值的表。当我运行胶水作业时,它失败并出现异常,“不知道如何将 NullType 保存到 REDSHIFT”。

我该如何使用它,或者 RedShift via Glue 不支持 NULL 插入?

作业脚本:

参考:AWS 论坛链接

更新:

我已经取得了一些进展。我认为问题是空字符(0x00),但事实并非如此。我重新制作了没有任何 NULL 字符的文件,我遇到了同样的问题。

我添加了这行代码。

我不完全理解为什么,但我能收集到的最好的结果是 DynamicFrame 推断出一些不存在的 NullType 字段。添加这行代码后,我插入了行,但似乎没有包含我的字符串字段。我的字段中只有大约 1/2 有值。

0 投票
5 回答
7481 浏览

aws-glue - “GlueArgumentError:参数 --input_file_path 是必需的”

我创建了一个 pyspark 脚本(胶水作业)并尝试使用 cli 命令 aws glue start-job-run --arguments 通过 EC2 实例运行(这里我正在传递参数列表)。我已经尝试使用简写语法和 json 语法来使用上述 cli 命令传递参数,但我收到错误“GlueArgumentError: argument --input_file_path is required”(输入文件路径是我试图在pyspark 脚本如下所示)

我用来运行该作业的 cli 命令如下:

在方法 2] 我使用 json 语法来执行作业。json文件内容如下:

请给我建议,因为我在几个小时内都在努力解决上述问题。

0 投票
4 回答
2809 浏览

amazon-web-services - AWS GLUE 数据导入问题

有一个excel文件testFile.xlsx,如下所示:

现在我想将数据导入AWS GLUE数据库,AWS GLUE中的爬虫已经创建,运行爬虫后AWS GLUE数据库中的表中没有任何内容。我想这应该是 AWS GLUE 中分类器的问题,但不知道创建一个合适的分类器来成功地将 excel 文件中的数据导入 AWS GLUE 数据库。感谢您的任何答案或建议。