Che*_*rry 5 amazon-s3 amazon-web-services aws-glue
看这个例子。它从 s3 目录读取数据,然后写回 s3 文件夹。但是如果我添加数据并重新运行此作业会怎样?我是对的,awsglue再次读取和写入所有数据?或者它只检测(如何?)新数据并只写入它?
顺便说一句,如果我从分区数据中读取,我必须自己指定“新到达”分区吗?
从我在该示例中看到的情况来看,他们正在从 S3 中的爬网位置读取数据,然后每次都替换文件,完全重新加载所有数据。
\n\n要仅处理新文件,您需要为您的作业启用书签,并确保通过执行以下操作来提交作业:
\n\nargs = getResolvedOptions(sys.argv, [\xe2\x80\x98TempDir\xe2\x80\x99,\xe2\x80\x99JOB_NAME\xe2\x80\x99])\nglue_context = GlueContext(SparkContext.getOrCreate()\n\n# Instantiate your job object to later commit\njob = Job(glue_context)\njob.init(args[\xe2\x80\x98JOB_NAME\xe2\x80\x99], args)\n\n# Read file, if you enable Bookmark and commit at the end, this will only\n# give you new files\ndynamic_frame = glueContext.create_dynamic_frame.from_catalog(database = db_name, table_name = tbl_name)\n\nresult_dynamic_frame = # do some operations\n\n# Append operation to create new parquet files from new data\nresult_dynamic_frame.toDF().write\n .mode("append")\n .parquet("s3://bucket/prefix/permit-inspections.parquet")\n\n# Commit my job so next time we read, only new files will come in\njob.commit()\nRun Code Online (Sandbox Code Playgroud)\n\n希望这可以帮助
\n| 归档时间: |
|
| 查看次数: |
2940 次 |
| 最近记录: |