我对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()
我检查数据库和表名是否正确。