Hive 用于在配置单元中插入唯一行的约束

Hive 用于在配置单元中插入唯一行的约束,hive,hiveql,Hive,Hiveql,我正在用一个大数据集创建一个配置单元表,有没有办法在表上创建约束,以便在插入数据时没有两行是相同的。 从2.1.0起,配置单元包括对未经验证的主键和外键约束的支持。由于这些约束未经验证,上游系统需要在将其加载到配置单元之前确保数据完整性。从3.0.0起,配置单元包括对唯一、非空、默认和检查约束的支持。除“唯一”之外,所有三种类型的约束都是强制的 您可以对所有数据集或分区应用DISTINCT或ROW_NUMBER。您还可以将旧数据与新数据联合使用,以简单地删除重复数据。如果表已分区,则可以通过以下

我正在用一个大数据集创建一个配置单元表,有没有办法在表上创建约束,以便在插入数据时没有两行是相同的。

从2.1.0起,配置单元包括对未经验证的主键和外键约束的支持。由于这些约束未经验证,上游系统需要在将其加载到配置单元之前确保数据完整性。从3.0.0起,配置单元包括对唯一、非空、默认和检查约束的支持。除“唯一”之外,所有三种类型的约束都是强制的

您可以对所有数据集或分区应用DISTINCT或ROW_NUMBER。您还可以将旧数据与新数据联合使用,以简单地删除重复数据。如果表已分区,则可以通过以下方式重写分区:

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将返回不同的行

有关使用行号和其他加载场景的更多详细信息,请参见

此外,Hive 2.2还支持。

从2.1.0起,配置单元包括对未经验证的主键和外键约束的支持。由于这些约束未经验证,上游系统需要在将其加载到配置单元之前确保数据完整性。从3.0.0起,配置单元包括对唯一、非空、默认和检查约束的支持。除“唯一”之外,所有三种类型的约束都是强制的

您可以对所有数据集或分区应用DISTINCT或ROW_NUMBER。您还可以将旧数据与新数据联合使用,以简单地删除重复数据。如果表已分区,则可以通过以下方式重写分区:

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将返回不同的行

有关使用行号和其他加载场景的更多详细信息,请参见


还支持Hive 2.2。

欢迎使用StackOverflow!为了得到准确的答案,你应该写下你的目标和让你陷入困境的问题,附上感兴趣的代码部分,并解释你试图解决的问题。如果你正在将表格从
Spark
作业馈送到
Hive
表格,您可以在写入表之前删除重复项
Hive
是“读取模式”,因此您不能像在传统数据库(如
Oracle
MySQL
中那样对其设置
约束
,这些数据库是
写入模式
”schema on read`允许在数据库中存储非结构化数据。欢迎使用StackOverflow!为了得到准确的答案,你应该写下你的目标和让你陷入困境的问题,附上感兴趣的代码部分,并解释你试图解决的问题。如果你正在将表格从
Spark
作业馈送到
Hive
表格,您可以在写入表之前删除重复项
Hive
是“读取模式”,因此您不能像在传统数据库(如
Oracle
MySQL
中那样对其设置
约束
,这些数据库是
写入模式
”“读取模式”允许在数据库中存储非结构化数据。