我将数据从Kafka写入到s3中的一个目录,其结构如下:
s3://bucket/topics/topic1/files1...N
s3://bucket/topics/topic2/files1...N
.
.
s3://bucket/topics/topicN/files1...N
这个存储桶中已经有很多数据,我想使用AWS Glue将其转换为拼图并对其进行分区,但有太多的数据无法一下子完成。我正在研究书签,似乎你不能使用它来只读取最新的数据或处理块中的数据。有没有推荐的方法来处理这样的数据,这样当新数据进来时,书签就可以工作了?
此外,书签是否要求spark或glue在我每次运行作业时都必须扫描整个数据集,以找出哪些文件大于上次运行的max_last_modified时间戳?这似乎非常低效,尤其是在源存储桶中的数据持续增长的情况下。
发布于 2019-07-23 18:20:36
我了解到,Glue希望所有类似的文件(具有相同结构和用途的文件)都在一个文件夹下,带有可选子文件夹。
s3://my-bucket/report-type-a/yyyy/mm/dd/file1.txt
s3://my-bucket/report-type-a/yyyy/mm/dd/file2.txt
...
s3://my-bucket/report-type-b/yyyy/mm/dd/file23.txt
report-type-a文件夹下的所有文件必须具有相同的格式。将像report-type-b这样的不同报表放入不同的文件夹。
您可能会尝试将几个输入文件放在适当的位置,运行ETL作业,在存储桶中放置更多文件,再次运行,等等。
我尝试过让当前文件工作(每天一个文件),然后回填历史文件。然而,请注意,这并不完全有效。我已经让文件在胶水处理正常,但当我试图添加过去的文件到's3://my-bucket/report-type/2019/05/report_20190510.gzip`,胶水没有“看到”或处理旧文件夹中的文件。
但是,如果我将旧报告移动到当前分区,它就可以工作:s3://my-bucket/report-type/2019/07/report_20190510.gzip
。
https://stackoverflow.com/questions/56282666
复制