hive - Hive 中唯一行插入的约束
问题描述
我正在创建一个带有大型数据集的配置单元表,有没有办法在表上创建约束,以便在我们插入数据时没有两行是相同的。
解决方案
Hive 不提供经过验证的 UNIQUE、PRIMARY KEY 约束。
从 2.1.0 开始,Hive 包括对未验证的主键和外键约束的支持。由于这些约束未经验证,上游系统需要在将数据加载到 Hive 之前确保数据完整性。从 3.0.0 开始,Hive 包括对 UNIQUE、NOT NULL、DEFAULT 和 CHECK 约束的支持。除了 UNIQUE 之外,所有三种类型的约束都被强制执行。
您可以将 DISTINCT 或 ROW_NUMBER 应用于所有数据集或分区。您也可以使用 UNION 旧数据和新数据来简单地删除重复项。如果你的表是分区的,你可以这样重写分区:
insert overwrite table MYTABLE partition(load_date='2020-07-25')
select col1, col2, ... colN
from MYTABLE where load_date='2020-07-25'
UNION
select col1, col2, ... colN
from DAILY_INCREMENT_DATA
UNION 将返回不同的行。
有关使用 row_number 和其他加载方案的更多详细信息,另请参阅此答案。
Hive 2.2 还支持ACID 模式下的 MERGE。
推荐阅读
- r - Xaringan 情节不渲染:网站正在减慢您的浏览器您想做什么
- java - 无法使用 Apache POI 删除行,因为单元格包含电子邮件地址
- css - 如何显示被其他div覆盖的div
- regex - 带有正则表达式的 Makefile 模式规则
- scala - 匹配运行计算的结果在 for comprehension 中无效
- sql-server - 尝试通过声明数据在 T-SQL 中排序时出错
- python - 我如何知道文件是否已完成复制?
- matlab - 从 MATLAB 中的单元矩阵中删除 NaN
- jestjs - 在 Jest expect 中处理 Boom 错误时无法理解错误
- qt - QT Quick 可以使用 png 图像表作为字体吗?