小编ron*_*tle的帖子

AWS Glue ETL 作业因“无法删除密钥:parquet-output/_temporary”而失败

我正在 Glue Crawler 生成的 CSV 数据表上运行 Glue ETL 作业。Crawler 访问具有以下结构的目录

   s3 
      -> aggregated output
         ->datafile1.csv
         ->datafile2.csv
     ->datafile3.csv
Run Code Online (Sandbox Code Playgroud)

这些文件被聚合到一个“聚合输出”表中,可以在 athena 中成功查询。

我正在尝试使用 AWS Glue ETL 作业将其转换为镶木地板文件。工作失败

"py4j.protocol.Py4JJavaError: An error occurred while calling 
o92.pyWriteDynamicFrame.
: java.io.IOException: Failed to delete key: parquet-output/_temporary"
Run Code Online (Sandbox Code Playgroud)

我无法在这里找到根本原因

我尝试通过多种方式修改 Glue 作业。我确保分配给作业的 IAM 角色有权删除相关存储桶上的文件夹。现在我正在使用 AWS 提供的默认临时/脚本文件夹。我试过在我的 s3 存储桶上使用文件夹,但看到类似的错误

s3://aws-glue-temporary-256967298135-us-east-2/admin
s3://aws-glue-scripts-256967298135-us-east-2/admin/rt-5/13-ETL-Tosat
Run Code Online (Sandbox Code Playgroud)

在下面分享完整的堆栈跟踪

19/05/10 17:57:59 INFO client.RMProxy: Connecting to ResourceManager at ip-172-32-29-36.us-east-2.compute.internal/172.32.29.36:8032
Container: container_1557510304861_0001_01_000002 on ip-172-32-1-101.us-east-2.compute.internal_8041
LogType:stdout
Log Upload Time:Fri May 10 17:57:53 +0000 2019
LogLength:0
Log Contents:
End of LogType:stdout …
Run Code Online (Sandbox Code Playgroud)

csv etl amazon-web-services parquet aws-glue

2
推荐指数
1
解决办法
3806
查看次数

AWS Glue,输出一个带分区的文件

我有一个 Glue ETL 脚本,它采用分区的 Athena 表并将其输出到 CSV。该表按两个条件进行分区,即单元和站点。当 Glue 作业运行时,它会为单元和站点分区的每个组合创建一个不同的 CSV 文件。相反,我只想要一个包含所有分区的输出文件,类似于 athena 表的结构

我对 "datasource0.toDF().repartition(1)" 有点玩弄,但我不确定它如何与 AWS 提供的脚本交互。我已经用镶木地板完成了这个,但这个脚本的结构不同

请注意下面的脚本我已经删除了大部分标签映射

from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
## @type: DataSource
## @args: [database = "testdata-2018-2019", table_name = "testdata", transformation_ctx = "datasource0"]
## @return: datasource0
## @inputs: [] …
Run Code Online (Sandbox Code Playgroud)

python csv amazon-web-services apache-spark aws-glue

2
推荐指数
1
解决办法
4773
查看次数