hive表hive增加分区字段字段以前的数据怎么办

hive大数据除重问题研究
hive大数据除重问题研究
存量表: store
增量表: &incre&
1. p_key & 除重主键
2. w_sort &排序依据
3. info & &其他信息
方法一(union all + row_number()over ):
insert overwrite table limao_store
select p_key,sort_word
from ( select tmp1.*, row_number() over(distribute by sort_word sort by p_key desc) rownum
from ( select *
from limao_store
from limao_incre
where hh.rownum = 1;
分析, 长表排序
方法二(left outer join + union all):
hive 不支持 顶层 union all ,而且union all 结果必须有别名
insert overwrite table limao_store
select t.p_key,t.sort_word from (
select s.p_key,s.sort_word from limao_store s left outer join limao_incre i on(s.p_key=i.p_key) where i.p_key=null
select p_key,sort_word from limao_incre);
不能识别 incre中的重复数据
长表关联 ,
表宽度加倍
方法三(left outer join + insert into)
insert overwrite table store
select s.* from store s left outer join incre i on(s.p_key=i.p_key) where i.p_key=null
insert into table jm_g_l_cust_secu_acct
select * from jm_g_l_cust_secu_acct_
insert into 最好不用。 使用insert into 在hdfs中的表现为,在表(分区)文件夹下,建立新的文件
存放insert into数据, 造成文件碎片,降低以后该表查询效率。
==================================================================================
create table limao_store
p_key string,
sort_word string
)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
create table limao_incre
p_key string,
sort_word string
)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
create table limao_store
p_key string,
sort_word string
)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
create table limao_incre
p_key string,
sort_word string
)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
=====================================================
================================================================================================
总结: &方法二和方法三原理相同。 方法三建议避免
方法二、方法三 暗含逻辑:
& & 1.增量同步数据(incre)和存量数据(store)冲突时,总是认为增量数据为最新的
& & 2.无论增量数据表 &还是 存量数据表, 表内没有重复字段
方法一, 不暗含上述逻辑。 全部合并,严格按排序字段排名取第一
一千万数据 store 和 一百万数据 incre 测试结果
方法一: &Time taken: 317.677 seconds
方法二: &Time taken: 106.032 seconds
总结: 方法二时间使用上大幅度少于方法一,但没有内部除重功能,只能用于比较除重。
==============================================
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'问题导读:
1.ROW_NUMBER() OVER的作用是什么?
2.在100万记录中,如何查询同一组数组的第二条记录?
本问题来自about云群 群友“举杯邀明月”提出问题,与“云神夜”讨论得出答案,供大家参考
name&&adx& && &&&tran_id& && && && && && &cost& && &&&ts
ck& && &&&5& && && &125.168.10.0& && && &&&33.00& &
ck& && &&&5& && && &187.18.99.00& && && &&&33.32& &
ck& && &&&5& && && &125.168.10.0& && && &&&33.24& &
我只要这两行,第三行的tran_id和第一行的重复了,所以我 要不最后面一行去重去掉
答案1:
select
t1.tran_id
,t2.
,t2.
from
(select distinct tran_id from table) t1
join
table t2
on t1.tran_id=t2.tran_id复制代码
如果使用distinct的话,我要把tran_id放在第一列,很丑查出来的数据
select * from (select *,row_number() over (partition by tran_idorder by timestamp asc) num from table) t where t.num=1;& &复制代码
row_number() over (partition by tran_idorder by timestamp desc) num& &取num=1 的
这个是取&&group by&&按timestamp 排序的第一条数据
按每个 guid group&&然后 按timestamp 排序 然后 加行标
然后去 行标为 1&&的
ROW_NUMBER() OVER函数的基本用法
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。
xlh& && && &&&row_num
1700& && && && &&&1
1500& && && && &&&2
1085& && && && &&&3
710& && && && && & 4
row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
初始化数据
create table employee (empid int ,deptid int ,salary decimal(10,2))
insert into employee values(1,10,5500.00)
insert into employee values(2,10,4500.00)
insert into employee values(3,20,1900.00)
insert into employee values(4,20,4800.00)
insert into employee values(5,40,6500.00)
insert into employee values(6,40,14500.00)
insert into employee values(7,40,44500.00)
insert into employee values(8,50,6500.00)
insert into employee values(9,50,7500.00)
数据显示为
empid& && & deptid& && &salary
----------- ----------- ---------------------------------------
1& && && &&&10& && && & 5500.00
2& && && &&&10& && && & 4500.00
3& && && &&&20& && && & 1900.00
4& && && &&&20& && && & 4800.00
5& && && &&&40& && && & 6500.00
6& && && &&&40& && && & 14500.00
7& && && &&&40& && && & 44500.00
8& && && &&&50& && && & 6500.00
9& && && &&&50& && && & 7500.00
需求:根据部门分组,显示每个部门的工资等级
预期结果:
empid& && & deptid& && &salary& && && && && && && && && && && & rank
----------- ----------- --------------------------------------- --------------------
1& && && &&&10& && && & 5500.00& && && && && && && && && && && &1
2& && && &&&10& && && & 4500.00& && && && && && && && && && && &2
4& && && &&&20& && && & 4800.00& && && && && && && && && && && &1
3& && && &&&20& && && & 1900.00& && && && && && && && && && && &2
7& && && &&&40& && && & 44500.00& && && && && && && && && && & 1
6& && && &&&40& && && & 14500.00& && && && && && && && && && & 2
5& && && &&&40& && && & 6500.00& && && && && && && && && && && &3
9& && && &&&50& && && & 7500.00& && && && && && && && && && && &1
8& && && &&&50& && && & 6500.00& && && && && && && && && && && &2
SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee
欢迎加入about云群 、 ,云计算爱好者群,关注
主题帖子积分
高级会员, 积分 1396, 距离下一级还需 3604 积分
高级会员, 积分 1396, 距离下一级还需 3604 积分
答案2少了order!
主题帖子积分
新手上路, 积分 20, 距离下一级还需 30 积分
新手上路, 积分 20, 距离下一级还需 30 积分
不错, 相当给力的row_number函数, 正好解决我遇到的一个问题。谢谢分享。
主题帖子积分
新手上路, 积分 47, 距离下一级还需 3 积分
新手上路, 积分 47, 距离下一级还需 3 积分
非常感谢哇
经常参与各类话题的讨论,发帖内容较有主见
经常帮助其他会员答疑
积极宣传本站,为本站带来更多注册会员
积极宣传本站,为本站带来更多的用户访问量
长期对论坛的繁荣而不断努力,或多次提出建设性意见
活跃且尽责职守的版主
为论坛做出突出贡献的会员
积极上进,爱好学习
站长推荐 /6
about云|新出视频,openstack零基础入门,解决你ping不通外网难题
云计算hadoop视频大全(新增 yarn、flume|storm、hadoop一套视频
视频资料大优惠
大数据零基础由入门到实战
阶段1:hadoop零基础入门基础篇
阶段2:hadoop2入门
阶段3:大数据非hadoop系列课程
阶段4:项目实战篇
阶段5:大数据高级系列应用课程
阶段6:工作实用系列教程
等待验证会员请验证邮箱
新手获取积分方法
Powered byRT,现在有一张表TABLE_A,两个字段,A_1,A_B,两个分区,par_a,par_b.
两种情况:
1. 现在想不影响现有表数据的情况下,添加分区par_c,到原表,不加载任何数据值。怎么做?
2. 如果添加分区时候,要指定一个默认值进行填充,该怎么做?
另外,如果第一种情况分区已经添加,给分区填充默认值,怎么做?
知道 的朋友麻烦不要拷贝连接,针对问题回答一下,谢谢
主题帖子积分
高级会员, 积分 2852, 距离下一级还需 2148 积分
高级会员, 积分 2852, 距离下一级还需 2148 积分
hive中分为动态分区和静态分区,楼主应该是静态分区。
可以设置下,动态分区就不会产生这个问题了。
动态分区与静态分区还有一个细微的差别是,静态分区一 定会创建分区,不管SELECT语句的结果有没有数据。而动态分区,只有在SELECT结果的记录数&0的时候,才会创建分区。
欢迎加入about云群 、 ,云计算爱好者群,关注
主题帖子积分
比如下面,你可以让他为空值
ALTER TABLE data_zh ADD IF NOT EXISTS
PARTITION (year = 1998) LOCATION ‘/hiveuser/hive/warehouse/data_zh.db/data_zh/1998.txt’
积极上进,爱好学习
经常参与各类话题的讨论,发帖内容较有主见
经常帮助其他会员答疑
站长推荐 /6
about云|新出视频,openstack零基础入门,解决你ping不通外网难题
云计算hadoop视频大全(新增 yarn、flume|storm、hadoop一套视频
视频资料大优惠
大数据零基础由入门到实战
阶段1:hadoop零基础入门基础篇
阶段2:hadoop2入门
阶段3:大数据非hadoop系列课程
阶段4:项目实战篇
阶段5:大数据高级系列应用课程
阶段6:工作实用系列教程
等待验证会员请验证邮箱
新手获取积分方法
Powered by今天看啥 热点:
[Hive]Hive分区表新增字段,hive分区表新增字段
一直没有尝试,被分区的概念吓到了,今天尝试了下,很简单
hive (default)& desc pms.test_cross_sale_
path_id string
visit_track_id
visit_product_id
visit_category_id
visit_brand_id
rcmd_track_id
rcmd_product_id bigint
rcmd_category_id
rcmd_brand_id
rcmd_algorithm_id
cart_track_id
cart_track_time string
cart_product_id bigint
cart_category_id
cart_brand_id
path_length int
session_id
end_user_id string
Time taken: 3.159 seconds在上表中新增两个字段platform_id、tpa,类型均为int类型
hive (pms)& alter table pms.test_cross_sale_path add columns(platform_id int, tpa int);
FAILED: ParseException line 1:12 cannot recognize input near 'pms' '.' 'test_cross_sale_path' in alter table statement
这样执行会有问题,数据库名默认不支持,换种写法即可
hive (pms)&
Time taken: 0.012 seconds
hive (pms)& alter table test_cross_sale_path add columns(platform_id int, tpa int);
Time taken: 0.012 seconds新增的字段将加到该表的最后,分区字段之前,并且在以前的分区中这两个字段都为NULL
hive (default)& desc pms.test_cross_sale_
col_name data_type comment
path_id string
visit_track_id string
visit_product_id bigint
visit_category_id bigint
visit_brand_id bigint
rcmd_track_id string
rcmd_product_id bigint
rcmd_category_id bigint
rcmd_brand_id bigint
rcmd_algorithm_id bigint
cart_track_id string
cart_track_time string
cart_product_id bigint
cart_category_id bigint
cart_brand_id bigint
path_type int
path_length int
path_list string
session_id string
gu_id string
end_user_id string
platform_id int
Time taken: 3.159 seconds
暂无相关文章
相关搜索:
相关阅读:
相关频道:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
云计算最近更新主题帖子积分
中级会员, 积分 592, 距离下一级还需 408 积分
中级会员, 积分 592, 距离下一级还需 408 积分
补充:增加列的时候,大约一次性增加了10多个列。
主题帖子积分
补充:增加列的时候,大约一次性增加了10多个列。有点像绕口令啊
为什么要增加列
而且咋还有中间表,楼主描述的在清楚些,能画个图就好了
欢迎加入about云群 、 ,云计算爱好者群,关注
主题帖子积分
高级会员, 积分 2015, 距离下一级还需 2985 积分
高级会员, 积分 2015, 距离下一级还需 2985 积分
楼主有以下几个问题?
在增加完列之后,hive生成数据导出到Oracle里,查询oracle字段都有值,但是hive中查询就没有值,
hive已经生成数据,但是为什么hive中没有值,楼主这个是什么意思?
如果A表已经存在,再次创建是否冲突
欢迎加入about云群 、 ,云计算爱好者群,关注
主题帖子积分
中级会员, 积分 592, 距离下一级还需 408 积分
中级会员, 积分 592, 距离下一级还需 408 积分
有点像绕口令啊
为什么要增加列
画图?整个VISIO?
hive表A的每个字段实际上都是经过计算得来的,把每个计算的结果汇总到一个临时表B中,然后再把表B中的值和表A对应,完成表A的数据生成。需求是现在表A中需要增加几个列,增加列之后,从hive里导出到oracle,发现这些列是有值的,但是在hive里查询(在hive直接执行语句,结果对应的值为null),是查询不出来的。但是表B查询就可以查询出来。重新创建表A,再查询就可以了。
主题帖子积分
中级会员, 积分 592, 距离下一级还需 408 积分
中级会员, 积分 592, 距离下一级还需 408 积分
楼主有以下几个问题?
在增加完列之后,hive生成数据导出到Oracle里,查询oracle字段都有值,但是hive ...
已经存在的表,创建的时候是床架另外一个名字,然后删除之前的表,把新表重命名。
主题帖子积分
高级会员, 积分 2015, 距离下一级还需 2985 积分
高级会员, 积分 2015, 距离下一级还需 2985 积分
已经存在的表,创建的时候是床架另外一个名字,然后删除之前的表,把新表重命名。
hive 到null是正常的,很可能数据格式的问题。
参考下面帖子,看看能否解决。
欢迎加入about云群 、 ,云计算爱好者群,关注
主题帖子积分
中级会员, 积分 592, 距离下一级还需 408 积分
中级会员, 积分 592, 距离下一级还需 408 积分
hive 到null是正常的,很可能数据格式的问题。
参考下面帖子,看看能否解决。
恩,谢谢,但是还是没有解决我存在的问题,不过还是十分感谢!
主题帖子积分
中级会员, 积分 592, 距离下一级还需 408 积分
中级会员, 积分 592, 距离下一级还需 408 积分
有点像绕口令啊
为什么要增加列
十分感谢您的帮助!
主题帖子积分
高级会员, 积分 1219, 距离下一级还需 3781 积分
高级会员, 积分 1219, 距离下一级还需 3781 积分
may&&be& &好像很强大
经常参与各类话题的讨论,发帖内容较有主见
经常帮助其他会员答疑
活跃且尽责职守的版主
积极上进,爱好学习
站长推荐 /6
about云|新出视频,openstack零基础入门,解决你ping不通外网难题
云计算hadoop视频大全(新增 yarn、flume|storm、hadoop一套视频
视频资料大优惠
大数据零基础由入门到实战
阶段1:hadoop零基础入门基础篇
阶段2:hadoop2入门
阶段3:大数据非hadoop系列课程
阶段4:项目实战篇
阶段5:大数据高级系列应用课程
阶段6:工作实用系列教程
等待验证会员请验证邮箱
新手获取积分方法
Powered by}

我要回帖

更多关于 hive增加一个自增字段 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信