AWS Glue作业向S3存储桶添加空增量

时间:2018-07-25 11:48:21

标签: amazon-web-services amazon-s3 aws-glue

我对AWS Glue并不陌生,所以我可能错过了一些显而易见的东西。我已经完成了一些工作,并将它们指向数据目录中的几个不同的MySQL表。

运行作业时,不同的脚本会将json文件完美地添加到我的S3存储桶中。但是,其中一项作业会在重新运行时将空的datasink文件添加到存储桶中。第一次可以完美运行,但是当我想添加最新数据时,它只是将空文件添加到存储桶中。 我已启用书签,而我只是使用Glue生成的python脚本。

我尝试过重置书签,这只会再次添加所有数据。

这仅对我要添加的表中的一个发生,即使该作业的创建方式与其余表格类似。

该脚本似乎可以正常工作,但是即使我知道该脚本也无法识别最新数据。

Screenshot of how my bucket looks after running job.

我自动生成的代码是:

import sys
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)
datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "mysql_capital", table_name = "capital_transaction", transformation_ctx = "datasource0")
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [("col1", "long", "col1", "long"), ("col2", "string", "col3", "string")], transformation_ctx = "applymapping1")
datasink2 = glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": "s3://path/path/path/transaction"}, format = "json", transformation_ctx = "datasink2")
job.commit()   

我检查数据库和表名是否正确。

0 个答案:

没有答案