问题标签 [aws-glue-spark]

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 回答
363 浏览

amazon-web-services - 如何使用 AWS Glue ETL 工具从 S3 读取文件名

我在 S3 中有一些看起来像这样的文件(都在同一路径中):

每个文件的架构相当简单:

我希望能够使用 Athena 从 S3 查询这些名称和 ID,并在存在新文件时使用 AWS Glue 抓取该 S3 位置。

具体来说,我想在 Athena 中有一个带有架构的表:

我的直觉是使用 AWS Glue PySpark 将 S3 文件中的数据组合成一个 DataFrame,这很简单。但是,每个文件的日期存在于文件名本身而不是数据中。

有没有办法提取文件名的“日期”部分并将其用作 AWS Glue PySpark DataFrame 中的列?如果没有,是否有人的直觉提出了另一种方法?

0 投票
1 回答
52 浏览

amazon-web-services - 从 Pyspark 中的 .TXT 文件中删除最后一个分隔符

我有一个从不同系统生成的 S3 文件,如下所示:

现在,在 AWS Glue Pyspark 脚本中读取此文件时,我想从文件中删除最后一个分隔符。你能告诉我怎么做吗?

问题是 - 在尝试将此 .TXT 文件转换为镶木地板时,当我提到分隔符为“|~|”时 它在最后添加了一个额外的列。发生这种情况是因为在源文件中有一个额外的 |~| 每行末尾的分隔符。

所以这就是为什么我要删除最后一个 |~| 文件中每一行的分隔符,然后将其转换为镶木地板。

代码 :-

0 投票
0 回答
41 浏览

apache-spark - AWS Glue 仅从 Dynamo DB 中读取选定的记录

以下代码正在读取完整的 dynamo DB 表。有什么办法,我们可以读取选定的行(给定一组有限的分区列值)

0 投票
1 回答
202 浏览

amazon-web-services - Glue - 书签无法识别较新分区中的文件

我有一个从 S3 存储桶读取的粘合作业进行转换并将结果上传到另一个 S3 存储桶。

这是我的aws glue get-job-bookmark --job-name xx回报

如您所见,我的 S3 结构为 bucketname/yyyy/mm/dd/HH。以上显示书签设置在前缀 2021/04/20/16 处。

现在,如果以相同的确切前缀添加另一个文件,则会对其进行处理。

但是,如果有一个较新的分区,例如 2021/04/20/17 并且其中有一个文件 - 它不会被书签拾取。

我的脚本非常简单,大部分都是自动生成的,因为我只是在测试这个功能。

我的表的位置在最顶层指定为 S3://xxyy。

谢谢阅读。

0 投票
0 回答
69 浏览

amazon-web-services - 使用 S3 在 AWS GLUE 中将多个数据源列转换为单个 DataTarget 列作为 JSON 对象

我是 AWS 服务的初学者,正在使用 AWS Glue 进行 ETL 工作。

我的数据源和目标都来自 S3 存储桶(.csv 文件)。

在这里,我需要将一些数据源列(多个)转换为 JSON 对象数组格式的 DataTarget 文件中的单列,其余列需要与其他单列映射。

例如:[{“Title”:“Size”,“Key”:“Size”,“Value”:“40”,“Type”:“可配置”}}

Title、Key、Type 是数据源文件中的独立列。我需要将这些列组合成一个名为“Attributes”的列,并且该值应该类似于前面提到的 Eg。

任何帮助将不胜感激。

提前致谢

0 投票
0 回答
471 浏览

amazon-web-services - AWS Glue Pyspark Parquet 写入 S3 耗时太长

我有一个 AWS 粘合作业 (PySpark),需要从大小为 350GB+ 的集中式数据湖加载数据,准备并加载到由两列分区的 s3 存储桶中。我注意到加载和写入一周的数据需要很长时间(甚至大约一天)。有几个月的数据需要写入。我尝试增加工作节点,但似乎无法解决问题。

我的胶水作业目前有 60 个 G.1x 工作节点。

我在代码中的 SparkConf 看起来像这样

我相信它确实成功地将文件写入分区,但是删除它创建的所有临时 spark-staging 文件需要很长时间。当我检查任务时,这似乎需要大部分时间。

我对 S3 的写入看起来像这样

任何帮助都会得到帮助。

0 投票
1 回答
76 浏览

pyspark - 如何从 AWS Glue Pyspark 中的 Rundate 缩短一周

我有一个场景,我在 AWS Glue 作业中以“YYYY-MM-DD”格式传递运行日期值。

让我们说 2021-04-19。

现在,我将这个运行日期读为 'datetime.strptime(rundate, "%y-%m-%d")'

但是现在我想从中创建2个变量变量A和变量B,例如-

变量 A= rundate- 2 周(应保存为 YYYYMMDD 格式)

变量 B = rundate- 1 周(应保存为 YYYYMMDD 格式)

然后使用此变量过滤数据框中的数据。

0 投票
0 回答
130 浏览

python-3.x - Glue ETL 作业 - 从本地数据库读取数据 - 使用目录连接

我有一个胶水 ETL 作业,它将数据写入本地 postgreSql 数据库。我无法在胶水方法中找到一个有效的选项来使用 jdbc 连接从同一数据库中读取数据。

以下是现有的方法:

  1. 从 S3(csv 文件)读取数据 - 使用爬虫 - 能够查看数据目录中的数据。
  2. 使用 jdbc url、用户名、密码和其他所需配置创建了一个胶水数据目录连接“connection-on-premise-postgre”。
  3. 粘合 ETL jobv 以将数据从目录表加载到本地 postgresql 数据库表

我需要使用上面“connection-on-premise-postgre”上使用的相同连接将数据从另一个本地表读取到 AWS 粘合作业

请让我知道如何做到这一点。我尝试使用选项创建数据框,但无法正确配置参数。

0 投票
1 回答
609 浏览

amazon-web-services - 如何在 AWS 胶水中使用从一个胶水脚本到另一个胶水脚本的函数

我有一个 AWS 胶水 pyspark 脚本,例如 scriptA.py。在这个脚本中,我定义了一些通用函数,例如 readSourceData()

def readSourceData(参数1,参数2):

//函数逻辑

现在我想在我的 secong glue pyspark 脚本 scriptB.py 中使用这个通用函数。

我有很多这样的通用功能。如何导入这些函数并在其他脚本中使用它们?

0 投票
1 回答
161 浏览

amazon-emr - 使用 spark sql 的 aws 胶水滴分区

使用 spark sql frm 胶水元数据删除分区会引发问题,而相同的代码在 hive shell 中工作。