【发布时间】:2018-09-28 07:45:33
【问题描述】:
我有以下问题。
以下代码由 AWS Glue 自动生成。
它的任务是从 Athena 获取数据(由 .csv @ S3 备份)并将数据转换为 Parquet。
该代码适用于参考航班数据集和一些相对较大的表(~100 Gb)。
但是,在大多数情况下,它会返回错误,这并不能告诉我太多。
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkConf, SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
conf = (SparkConf()
.set("spark.driver.maxResultSize", "8g"))
sc = SparkContext(conf=conf)
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "XXX", table_name = "csv_impressions", transformation_ctx = "datasource0")
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [("event time", "long", "event_time", "long"), ("user id", "string", "user_id", "string"), ("advertiser id", "long", "advertiser_id", "long"), ("campaign id", "long", "campaign_id", "long")], transformation_ctx = "applymapping1")
resolvechoice2 = ResolveChoice.apply(frame = applymapping1, choice = "make_struct", transformation_ctx = "resolvechoice2")
dropnullfields3 = DropNullFields.apply(frame = resolvechoice2, transformation_ctx = "dropnullfields3")
datasink4 = glueContext.write_dynamic_frame.from_options(frame = dropnullfields3, connection_type = "s3", connection_options = {"path": "s3://xxxx"}, format = "parquet", transformation_ctx = "datasink4")
job.commit()
AWS Glue 识别的错误消息是:
调用 o72.pyWriteDynamicFrame 时出错
日志文件还包含:
作业因阶段失败而中止:... 写入行时任务失败
知道如何找出失败的原因吗?
或者它可能是什么?
【问题讨论】:
标签: amazon-web-services pyspark etl aws-glue