Hive3怎么使用代理键

发布时间:2021-07-12 16:39:46 作者:chen
来源:亿速云 阅读:169

这篇文章主要介绍“Hive3怎么使用代理键”,在日常操作中,相信很多人在Hive3怎么使用代理键问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hive3怎么使用代理键”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

您可以使用内置的SURROGATE_KEY用户定义函数(UDF)在将数据输入表中时自动为行生成数字ID。生成的代理键可以替换多个复合键。
Hive仅在ACID表上支持代理键,如以下表类型矩阵中所述:
表类型
ACID
代理键
文件格式
插入
更新/删除
托管:CRUD事务性
ORC
托管:仅插入式交易
任何
没有
托管:临时
没有
没有
任何
没有
外部
没有
没有
任何
没有
您要使用代理键联接的表不能具有需要转换的列类型。这些数据类型必须是原生类型,例如INT或STRING。
使用生成的键进行联接比使用字符串进行联接要快。使用生成的键不会通过行号将数据强制进入单个节点。您可以生成键作为自然键的抽象。代理键比UUID具有优势,后者速度较慢且具有概率。
SURROGATE_KEY UDF为您插入表中的每一行生成唯一的ID。它基于分布式系统中的执行环境生成键,其中包括许多因素,例如内部数据结构,表的状态和最后的事务ID。代理键生成不需要计算任务之间的任何协调。
UDF不带参数或带两个参数:
1.  以具有  ACID  属性的默认  ORC  格式创建一个学生表。
CREATE TABLE students (row_id INT, name VARCHAR(64), dorm INT);
2.  将数据插入表中。例如:
INSERT INTO TABLE students VALUES (1, 'fred flintstone', 100), (2, 'barney rubble', 200);
3.  使用  SURROGATE_KEY UDF  创建学生表的版本。
CREATE TABLE students_v2 (`ID` BIGINT DEFAULT SURROGATE_KEY(), row_id INT, name VARCHAR(64),  dorm INT,  PRIMARY KEY (ID) DISABLE NOVALIDATE);
4.  插入数据,它会自动为主键生成代理键。
INSERT INTO students_v2 (row_id, name, dorm) SELECT * FROM students;
5.  看一下代理键。
SELECT * FROM students_v2;+-----------------+---------------------+-------------------+-------------------+| students_v2.id  | students_v2.row_id  | students_v2.name  | students_v2.dorm  |+-----------------+---------------------+-------------------+-------------------+| 1099511627776   | 1                   | fred flintstone   | 100               || 1099511627777   | 2                   | barney rubble     | 200               |+-----------------+---------------------+-------------------+-------------------+
6.  将代理键作为外键添加到另一个表(例如  student_grades  表)中,以加快表的后续联接。
ALTER TABLE student_grades ADD COLUMNS (gen_id BIGINT); MERGE INTO student_grades g USING students_v2 s ON g.row_id = s.row_idWHEN MATCHED THEN UPDATE SET gen_id = s.id;
现在,您可以在代理键上实现快速联接。

到此,关于“Hive3怎么使用代理键”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. 使用python怎么修改字典键
  2. 如何使用ip代理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hive3

上一篇:怎么在CDP上使用NiFi、Kafka和HBase构建可扩展流程

下一篇:怎么用 Bash 读写文件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》