博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MaxCompute SQL Row_Sequence 实现列自增长
阅读量:6485 次
发布时间:2019-06-23

本文共 1032 字,大约阅读时间需要 3 分钟。

背景:多维数据仓库中的维度表和事实表一般都需要有一个代理键,作为这些表的主键,代理键一般由单列的自增数字序列构成。MaxCompute(原ODPS)没有关系中的自增列 auto-increment id但可以通过UDF来给海量数据的每一行产生唯一的id。

效果如下:

select  row_sequence(),name from user_info;

60706e8bcb92ce7c4b8e93864a5856de0067b155

一、准备工作

1、准备阿里云账号,文档参考:

2、开通大数据开发套件、MaxCompute服务。文档参考:

3、配置Eclipse ODPS环境,文档参照:

二、通过Eclipse创建UDF

1、在Eclipse环境中,新建Row_Sequence.java,代码如下

package com.aliyun.odps.examples.udf;import com.aliyun.odps.io.LongWritable;import com.aliyun.odps.udf.UDF;public class Row_Sequence   extends UDF {		 private LongWritable result = new LongWritable();	  public Row_Sequence () {	    result.set(0);	  }	      public String evaluate() {    	result.set(result.get() + 1);        return result.toString();    }}

2、导出为Row_Sequence.JAR

4b8df735c1b1c80d52fda8230b39c18a5f9beea2

037e9ba1b119269857ee68a245364e578909137c

三、通过大数据开发套件注册函数

1、通过大数据开发数据开发->资源管理,上传Row_Sequence.JAR资源。

bf88a2fa45226a73c7f66308af8e51187388dc0f

2、通过大数据开发数据开发->函数管理,注册row_sequence函数。

e744201360d1dddf6f670266d473aab0dddf1e73

四、通过大数据开发套件验证

1、通过SQL查询结果

select row_sequence(),name  from user_info;

60706e8bcb92ce7c4b8e93864a5856de0067b155

我们可以看到,通过UDF可以完成列增长效果,由于MaxCompute读取数据是无序的,所以还需要把数据insert overwrite table到新表中。

注意:本教程UDF在小规模数据单节点是可行的,如果是海量数据多节点并行,会出现重复数,建议用uuid()函数;

select uuid() as id,* from user_info ;

bba01b493e1c5d904e882b1c380673c6ebe49a98

 

转载地址:http://qzpuo.baihongyu.com/

你可能感兴趣的文章
python综合练习1-- 用户登录
查看>>
ftp模式 503、227错误
查看>>
java-第九章-编写程序,打印如图案,要求图案的行数由用户输入.
查看>>
zookeeper 的安装配置及简单使用
查看>>
云盒子企业网盘入驻阿里云市场,正式向公有云市场发力!
查看>>
ALI的Tensorflow炼成与GAN科普
查看>>
cifs文件系统{samba文件共享服务}
查看>>
date -d的灵活应用
查看>>
Nis服务器主从安装配置
查看>>
Sharepoint 2010配置form认证方式(SQL账号)
查看>>
Perl变量及用法
查看>>
11(maven+SSH)网上商城项目实战之Freemarker 页面静态化
查看>>
mySql存储过程,简单实现实例
查看>>
布局display
查看>>
linux命令:until循环
查看>>
SFP模块光信号强度知识介绍
查看>>
apache的rewrite规则无法加载问题
查看>>
Python字典get()方法的实际应用
查看>>
如何调整Loadrunner中Vuser的数量限制
查看>>
数据类型datetime和timestamp的区别
查看>>