Hive中生成自增序列的常用方法

在日常业务开发过程中,通常遇到需要hive数据表中生成一列唯一ID,当然连续递增的更好。

最近在结算业务中,需要在hive表中生成一列连续且唯一的账单ID,于是就了解生成唯一ID的方法

1. 利用row_number函数

语法:row_number() over(order by step)+start_num

step表示每次递增多少

start_num表示从哪个值开始递增,不写默认是0

如下:表示从10000开始,每次递增1

SELECT row_number() over(order by 1)+10000

因此输出是10001

如果有其他值,也可以拼接其它值,比如列date是20231010

SELECT CONCAT(date,row_number() over(order by 1)+10000) AS auto_increment_id

因此输出是2023101010001

2. 利用自定义函数序列

首先Hive环境要有hive-contrib相关jar包

定义函数row_sequence

create temporary function row_sequence as 'org.apache.hadoop.hive.contrib.udf.UDFRowSequence';

使用函数row_sequence

SELECT row_sequence() AS auto_increment_id

row_sequence的自增规则是我们自己定义的,至于怎么定义,就看我们的逻辑是怎么实现

3、二者区别

第一种方法row_number

在一次SQL运行中是全局递增的,只不过再次执行SQL就会重复,如果不想重复我们可以更改start_num的值,把start_num调整到我们认为的不会重复的值开始

或者拼接上日期或者时间戳等前缀,这样每次执行就不会重复

第二种方法UDFRowSequence

由于是我们自己定义的函数,而SQL任务是以分布式的运行的,一个SQL并发可能会有多个job执行,每个job可以理解为1个节点或者进程,在每个进程上运营的序列都从起始值开始,所以不能保证序号全局连续唯一。因此我们可以借助第三方存储记录,比如Redis,来保证生产序列的全局连续递增

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/101335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ansible 调研

参考:自动化运维工具——ansible详解(一) - 珂儿吖 - 博客园 (cnblogs.com) ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点&#xf…

使用Plotly模拟远古博弈游戏_掷骰子

不乏投资大师、量化基金经理从着迷博弈游戏开始迈出步伐...... 开始学习使用python包Plotly模拟掷骰子。 安装Plotly 终端输入命令:python3 -m pip install --user plotly 创建骰子类 掷骰子 分析结果 绘制直方图 投掷一个骰子点数的分布 投掷两个骰子1000次的点数…

【QT】Ubuntu 编译安装 QT 5.12.7 源码

直接通过源码来编译安装 QT,难度太大,耗时较长,一般不是特别推荐使用源码安装。 目录 1、下载 QT 源码包 2、搭建安装环境(下载依赖库) 3、编译QT源码的脚本 1、下载 QT 源码包 QT5.12.7源码下载地址: download | QT 5.12.7 选择任意一…

spring boot+ vue+ mysql开发的一套厘米级高精度定位系统源码

UWB室内高精度定位系统源码,自主版权演示 UWB技术最核心的能力就是精准的定位与测距,当然它还具备通信功能。不过,目前主流通信技术已经相当成熟,无需UWB兼顾去做通信传输。而且,如果使用UWB通信功能,反而会…

多媒体播放软件 Infuse mac中文特点介绍

Infuse mac是一款多媒体播放器应用,它支持播放多种格式的视频文件、音频文件和图片文件,并且可以通过AIrPlay将媒体内容投放到其他设备上。Infuse还支持在线视频流媒体播放和本地网络共享,用户可以通过它来访问家庭网络上的媒体文件。 Infuse…

什么是React的虚拟DOM(Virtual DOM)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

奖励最顶尖的 K 名学生 (2512.leetcode,Java中sort的巧妙lambda使用)-------------------Java实现

奖励最顶尖的 K 名学生 (2512.leetcode,Java中sort的巧妙lambda使用)-------------------Java实现 题目表述 给你两个字符串数组 positive_feedback 和 negative_feedback ,分别包含表示正面的和负面的词汇。不会 有单词同时是正…

【Doris实战】Apache-doris-2.0.2部署帮助手册

Apache-doris-2.0.2部署帮助手册 校验时间:2023年10月11日 文章目录 Apache-doris-2.0.2部署帮助手册安装前准备安装包安装要求Linux 操作系统版本需求软件需求句柄需求关闭 Swap网络需求 部署规划用户规划目录规划免密需求 安装步骤配置JDK配置Doris文件 启动与停止…

Linux是什么,其特点是啥

与大家熟知的 Windows 操作系统软件一样,Linux 也是一个操作系统软件,其 logo 是一只企鹅。与 Windows 不同之处在于,Linux 是一套开放源代码程序的、可以自由传播的类 Unix 操作系统软件。Linux,全称GNU/Linux,是一种…

JAXB 使用记录 bean转xml xml转bean 数组 继承

JAXB 使用记录 部分内容引自 https://blog.csdn.net/gengzhy/article/details/127564536 基础介绍 JAXBContext类:是应用的入口,用于管理XML/Java绑定信息 Marshaller接口:将Java对象序列化为XML数据 Unmarshaller接口:将XML数…

Spark入门

Spark 1.Spark概述 2.Spark特点 3.RDD概述 1. Spark概述 什么是Spark 回顾:Hadoop主要解决,海量数据的存储和海量数据的分析计算。 Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 Hadoop与Spark历史 Hadoop与Spark框架对比 Dr…

js中async的作用

async是JavaScript中的关键字,用于表示函数是异步的。 当函数被标记为async时,该函数会自动返回一个Promise对象,这个Promise对象的状态可能为resolved或rejected,具体取决于函数内部的操作和返回值。 使用async关键字时&#x…

【gmail注册教程】手把手教你注册Google邮箱账号

手把手教你注册Google邮箱账号 写在前面: 要注意,注册Google邮箱必须要确保自己能够 科学上网,如果暂时做不到,请先进行相关学习。使用的手机号是大陆(86)的。 在保证自己能够科学上网后,在浏…

【三维张量的展开和折叠 python】

三维张量的展开和折叠 python 测试张量,模态展开和折叠函数测试结果 测试张量,模态展开和折叠函数 tensor np.array([[[0, 3, 6, 9],[1, 4, 7, 10],[2, 5, 8, 11]],[[12, 15, 18, 21],[13, 16, 19, 22],[14, 17, 20, 23]]])def mode_k_folding(mat, k,…

Docker--harbor

一,registry registry是私有仓库的核心,只有字符终端。 二,registry部署 #首先下载 registry 镜像 docker pull registry#在 daemon.json 文件中添加私有镜像仓库地址 vim /etc/docker/daemon.json {"insecure-registries": [&q…

如何在 Spring Boot 中使用 WebSocket

在Spring Boot中使用WebSocket构建实时应用 WebSocket是一种用于实现双向通信的网络协议,它非常适合构建实时应用程序,如在线聊天、实时通知和多人协作工具。Spring Boot提供了对WebSocket的支持,使得在应用程序中集成WebSocket变得非常容易…

3D包容盒子

原理简述 包围体(包容盒)是一个简单的几何空间,里面包含着复杂形状的物体。为物体添加包围体的目的是快速的进行碰撞检测或者进行精确的碰撞检测之前进行过滤(即当包围体碰撞,才进行精确碰撞检测和处理)。包…

Rule-Engine-Starter V1.0.0

一个轻量级的规则引擎、搜索引擎,让条件匹配简单、优雅。 GIT地址 https://gitcode.cosmoplat.com/15011240224/rule-engine-starter 介绍 Rule-Engine-Starter 是一个轻量级规则引擎,V1.0.0主要解决条件匹配问题。比如飞书文档,每个文档都…

【网络安全 ---- 靶场搭建】凡诺企业网站管理系统靶场详细搭建过程(asp网站,练习Access数据库的 sql注入)

一,资源下载 百度网盘资源下载链接:百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com…

【Mysql实现递归树查询】

Mysql8实现递归查询 递归执行分析demo数据查询demo数据扩展字段扩展 大家好! 在我们日常工作中,经常会遇到一些问题,它们的一些解决方案通常会用到递归这一强大的技术手段。递归不仅能帮助我们更高效的解决问题,还可以使代码更简介、更易于理解, 今天我来给大家分享…