Amazon web services 默认情况下,aws glue是否处理新数据?

Amazon web services 默认情况下,aws glue是否处理新数据?,amazon-web-services,amazon-s3,aws-glue,Amazon Web Services,Amazon S3,Aws Glue,看看这个例子。它从s3目录中读取数据,然后写回s3文件夹。但如果我添加数据并重新运行此作业会怎么样?我是对的,aws glue再次读取和写入所有数据?或者它只检测(如何?)新数据并只写它 顺便说一下,如果我从分区数据中读取数据,我必须自己指定“新到达”分区?从该示例中我可以看到,他们从S3中的爬网位置读取数据,然后每次都替换一个文件,完全重新加载所有数据 要仅处理新文件,您需要为作业启用,并确保通过执行以下操作来提交作业: args = getResolvedOptions(sys.argv,

看看这个例子。它从s3目录中读取数据,然后写回s3文件夹。但如果我添加数据并重新运行此作业会怎么样?我是对的,aws glue再次读取和写入所有数据?或者它只检测(如何?)新数据并只写它


顺便说一下,如果我从分区数据中读取数据,我必须自己指定“新到达”分区?

从该示例中我可以看到,他们从S3中的爬网位置读取数据,然后每次都替换一个文件,完全重新加载所有数据

要仅处理新文件,您需要为作业启用,并确保通过执行以下操作来提交作业:

args = getResolvedOptions(sys.argv, [‘TempDir’,’JOB_NAME’])
glue_context = GlueContext(SparkContext.getOrCreate()

# Instantiate your job object to later commit
job = Job(glue_context)
job.init(args[‘JOB_NAME’], args)

# Read file, if you enable Bookmark and commit at the end, this will only
# give you new files
dynamic_frame = glueContext.create_dynamic_frame.from_catalog(database = db_name, table_name = tbl_name)

result_dynamic_frame = # do some operations

# Append operation to create new parquet files from new data
result_dynamic_frame.toDF().write
  .mode("append")
  .parquet("s3://bucket/prefix/permit-inspections.parquet")

# Commit my job so next time we read, only new files will come in
job.commit()

希望这有帮助

谢谢您的明确解释。但当我尝试使用scala代码时,glue会一次又一次地读取和写入所有数据。如果你能回答我的问题,那就太棒了。我也遇到了同样的问题,尽管书签已启用,但工作仍在重新处理所有目录数据。@stochasticcrap我很乐意帮助你。你能用你想做什么的示例代码提出一个新问题吗?