我们有在S3上存储数据的流式应用程序。 S3分区可能有重复的记录。我们通过Athena查询S3中的数据。亚马逊Athena上的重复数据删除
有没有一种方法可以从S3文件中删除重复项,以便我们在从雅典娜查询时不会得到它们?
我们有在S3上存储数据的流式应用程序。 S3分区可能有重复的记录。我们通过Athena查询S3中的数据。亚马逊Athena上的重复数据删除
有没有一种方法可以从S3文件中删除重复项,以便我们在从雅典娜查询时不会得到它们?
您可以编写一个小型bash脚本来执行配置单元/ spark/presto查询以读取dat,删除重复项,然后将其写回S3。
我不使用雅典娜,但因为它只是presto,那么我会假设你可以做任何可以在Presto做的事情。
的bash脚本执行以下操作:
例如:
CREATE TABLE mydb.newTable AS
SELECT DISTINCT *
FROM hive.schema.myTable
语法参考:https://prestodb.io/docs/current/sql/create-table.html
现在可以安全地读取相同的表,但该记录将是不同的。
我们不能删除雅典娜的重复,因为它在文件上工作,它有工作的周末。
所以一些重复记录应该如何从s3中的文件中删除,最简单的方法就是shell脚本。
或
用不同选项写入选择查询。
注:两者都是昂贵的操作。
对于存储在S3中的数据,使用Athena可以使EXTERNAL TABLE。如果你想修改现有的数据,然后使用HIVE。
INSERT OVERWRITE TABLE new_table_name SELECT DISTINCT * FROM old_table;
虽然你的建议是正确的,雅典娜不提供插入或更新数据的反正。所以INSERT OVERWRITE将不起作用。我猜将不得不编写EMR作业才能达到同样的效果 – Sourabh
你并不需要在这方面使用雅典娜。您可以使用任何其他建议的引擎。 –
由于您正在使用AWS,因此您可以使用数据管道每天通过Spark运行此作业,例如,如果您没有Hadoop设置。 –