hive - Amazon Athena 上的重复数据删除

标签 hive amazon-athena presto

我们有流应用程序在 S3 上存储数据。 S3 分区可能有重复的记录。我们通过 Athena 查询 S3 中的数据。

有没有办法从 S3 文件中删除重复项,以便我们在从 Athena 查询时不会得到它们?

最佳答案

您可以编写一个小的 bash 脚本来执行 hive/spark/presto 查询以读取数据,删除重复项,然后将其写回 S3。

我不使用 Athena,但因为它只是 presto,所以我假设你可以做任何可以在 Presto 中做的事情。

bash 脚本执行以下操作:

  • 读取数据并应用不同的过滤器(或您想要应用的任何逻辑),然后将其插入到另一个位置。

  • 例如 :
    CREATE TABLE mydb.newTable AS
    SELECT DISTINCT *
    FROM hive.schema.myTable
    
  • 如果是重复性任务,那么 INSER OVERWRITE 会更好。
  • 不要忘记设置 hive db 的位置,以便轻松识别数据目的地。

  • 语法引用:https://prestodb.io/docs/current/sql/create-table.html
  • 使用 aws s3 CLI command 删除旧的数据目录.
  • 将新数据移动到旧目录

  • 现在您可以安全地读取同一张表,但记录是不同的。

    关于hive - Amazon Athena 上的重复数据删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45659174/

    相关文章:

    sql - 在另一列中使用列别名

    amazon-web-services - 如何使MSCK修复表在AWS Athena中自动执行

    arrays - 如何在 Presto 中比较两个数组?

    sql - 在 HiveQL 中使用 RANK,动态限制

    hadoop - 如何仅使用Hive中的regexp_extract函数提取标点符号

    hadoop - Hive 无法加载数据-cloudera quickstart VM 5.8

    sql - 如何使用 Presto SQL 获取可重复的样本?

    casting - 在配置单元中将值从字符串转换为 int

    amazon-athena - Athena API 获取当前并发运行的查询数

    sql - 时间范围表 SQL Presto