hive - 从 HDFS 中的数据文件夹在配置单元中创建表 - 删除重复的行
问题描述
我在 HDFS 中有一个文件夹,我们称之为 /data/users/ 在该文件夹内,每 10 天添加一个新的 csv 文件。基本上,新文件将仅包含活动用户,例如
- file_01Jan2020.csv:包含 1000 个当前活跃用户的数据
- file_10Jan2020.csv:包含 950 个当前活跃用户的数据(file_01Jan2020.csv 中的数据相同,但记录少 50 条)
- file_20Jan2020.csv:包含 920 个当前活跃用户的数据(file_10Jan2020.csv 中的数据相同,但记录少了 30 条)
实际上,这些文件要大得多(每个文件约 800 万条记录,每 10 天减少 1K 条记录)。此外,较新的文件永远不会有旧文件中不存在的新记录。它只会有更少的记录。
我想使用此文件夹中的数据在 hive 中创建一个表。我现在正在做的是:
- 从文件夹 /data/users/ 中的数据创建外部表
- 创建具有相同结构的内部表
- 将数据从外部表写入内部表,其中,
- 重复项被删除
- 如果其中一个文件中不存在记录,那么我会将其标记为“已删除”,并将“已删除”设置在我在创建的内部表中定义的新列中
我担心创建外部表的步骤,因为数据非常大,一段时间后该表会很大,我想知道是否有更有效的方法来执行此操作,而不是每次加载所有文件在文件夹中。
所以我的问题是:将 HDFS 文件夹中的数据提取到配置单元表中的最佳方法是什么,鉴于此,该文件夹包含大量具有大量重复文件的文件。
解决方案
我建议按日期对数据进行分区,这样您每次读取表时都不必遍历所有记录。
推荐阅读
- c# - 本地源不存在 从 packages.config 迁移到 PackageReference
- python - 如何解决 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 3: invalid start byte?
- twilio - Twilio 工作室,初始短信
- python - 如何将 HTML 类添加到内置的“用户”表单?
- python - Python 继承和关键字参数
- python - 从python并行执行bash任务,提取csv列
- javascript - 使用反应从页面导入数据
- python - 当我调用 python API 时来自 EC2 实例的 HTTP 超时
- ansible - 如何在 ansible 任务中通过秘密工具将新记录存储在 gnome 密钥环中,或者如何在 ansible shell 任务中通过管道传输标准输入?
- python - 有没有办法一次在某个列上输出 Pandas.groupby 中的 df.min、df.max 和 df.mean?