大数据CDP集群中ImpalaHive常见使用语法

1. SQL中设置常量

set var:pi_sysdate = 20241114;
Variable PI_SYSDATE set to 20241114

2. CDP中impala 创建内外表

#hive3.0 默认不创建事务表的配置参数
set default_transactional_type=none;
create external table stg.hd_aml_mac_ip_ext (machinedate string,vc_fundacco string,ip string
)
stored as textfile
tblproperties ('objcapabilities'='extread,extwrite');create external table stg.hd_aml_mac_ip (machinedate string,vc_fundacco string,ip string
)
stored as parquet
tblproperties ("parquet.compression"="snappy");

3. hive导出逗号分隔文件到本地

hive -e "SELECT * from student" | sed 's/\t/,/g' > /tmp/student.csv

4. hive on mr 的参数设置 开启动态分区

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions=500000;
set hive.exec.max.dynamic.partitions.pernode=100000;
set mapreduce.reduce.memory.mb=4096;

5. MYSQL hive元数据

set session group_concat_max_len = 20480;
select concat_ws('',a.create_body_str,CHAR(10),c.tbl_comment,CHAR(10),b.partition_str,CHAR(10),a.stored_format,CHAR(10),d.compress_str,';') AS create_sql
FROM (
select t.TBL_ID,t.TBL_NAME,case when k.INPUT_FORMAT like '%.parquet%' then 'STORED AS PARQUET'when k.INPUT_FORMAT like '%.SequenceFile%' then 'STORED AS SEQUENCEFILE'when k.INPUT_FORMAT like '%.Text%' then ''else 'STORED AS NULL'end AS stored_format,concat_ws('','CREATE',CASE t.TBL_TYPE WHEN 'EXTERNAL_TABLE' THEN ' EXTERNAL'ELSE '' END,' TABLE IF NOT EXISTS ${schema}.',t.TBL_NAME,'(',CHAR(10),group_concat(concat_ws('',g.COLUMN_NAME,' ',g.TYPE_NAME,' COMMENT ','''',REPLACE(REPLACE(g.COMMENT,';',' '),'; ',' '),'''',CHAR(10)) ORDER BY g.INTEGER_IDX separator ','),')') AS create_body_str
from hive.TBLS t,hive.SDS k,hive.COLUMNS_V2 g,hive.DBS s 
where t.SD_ID = k.SD_ID
and k.CD_ID = g.CD_ID
and s.DB_ID = t.DB_ID
and k.INPUT_FORMAT not like '%.kudu%'
and s.NAME = 'stg' -- 限制数据库
group by t.TBL_ID
-- limit 100
) a
left join (select t.TBL_ID,concat_ws('','COMMENT ','''',t.param_value,'''') AS tbl_commentfrom hive.TABLE_PARAMS twhere t.param_key = 'comment'group by t.TBL_ID) c on c.tbl_id = a.tbl_id
left join (select t.TBL_ID,concat_ws('','PARTITIONED BY (',group_concat(concat_ws('',t.pkey_name,' ',t.pkey_type,' ','COMMENT ','''',t.pkey_comment,'''')order by t.integer_idx separator ','),')') AS partition_strfrom hive.PARTITION_KEYS t group by t.TBL_ID) b ON b.tbl_id = a.tbl_idleft join (select t.TBL_ID,concat_ws('','TBLPROPERTIES (','''',t.PARAM_KEY,'''','=','''',t.PARAM_VALUE,''')') as compress_strfrom hive.TABLE_PARAMS t where t.param_key like '%compression%'group by t.TBL_ID,t.param_key,t.param_value-- limit 100) d on d.tbl_id = a.tbl_id order by a.tbl_name;

6.修复数据

 #impala刷新元数据invalidate metadata ods.tablename;#hive修复磁盘数据msck repair table ods.tablename;

7. impala中时间戳转(DATE)指定格式的字符串

SELECT from_timestamp(now(),'yyyyMMdd');  --timestamp\date-->string
SELECT to_timestamp('20230710','yyyyMMdd')  --string->timestamp
select from_timestamp(date_add(to_timestamp('20231201','yyyyMMdd'),1),'yyyyMMdd')
select date_add(now(),interval -1 years); --获取去年years\months\days\

8. 使用UDF函数

--查看使用函数
use default;
show functions; 
--查看函数所用jar&主类
show create function default.genseq;
--将jar包上传到新集群以及修改权限
hdfs dfs -put /home/app_adm/etl/udf/udf_0608.jar /user/hive/warehouse/udf_0608.jar
hdfs dfs -chown hive:hive /user/hive/warehouse/udf_0608.jar
hdfs dfs -chmod 777 /user/hive/warehouse/udf_0608.jar
--删除UDF函数,先在impala删除,再在hive中删除;
--1.impala执行
DROP FUNCTION DEFAULT.udf10(STRING, STRING);
--2.hive执行
drop function default.udf10;
--创建UDF函数 hive创建,impala刷新元数据同步。
create function default.clnseq as 'cn.com.businessmatrix.udf.HLSequenceCleaner' using jar 'hdfs:///user/hive/warehouse/udf_0608';
create function default.genseq as 'cn.com.businessmatrix.udf.HLSequenceGenerator' using jar 'hdfs:///user/hive/warehouse/udf_0608'; 
--将本地的文件强制推送到hdfs上面,如果文件已存在覆盖
hdfs dfs -put -f /home/file/ylb_trade_transfer_ext_out /tmp/hive/stg/ylb_trade_transfer_ext_out
--对HDFS目录进行用户赋权-用于执行hive命令
sudo -u hdfs hadoop fs -chown -R hive:supergroup /tmp/hive/stg/ylb_trade_transfer_ext

9. impala更新KUDU表 指定主键

upsert into ${var:schema_ods}.mdm_ip_cust(sk_invpty_of_cust,gp_flag
)
select t.sk_invpty_of_cust,0 as gp_flagfrom ods.mdm_ip_cust twhere t.gp_flag is null;

10.使用hadoop的archive将小文件归档

--用来控制归档是否可用
set hive.archive.enabled=true;
--通知Hive在创建归档时是否可以设置父目录
set hive.archive.har.parentdir.settable=true;
--控制需要归档文件的大小
set har.partfile.size=1099511627776;
--使用以下命令进行归档
ALTER TABLE A ARCHIVE PARTITION(dt='2020-12-24', hr='12');
--对已归档的分区恢复为原文件
ALTER TABLE A UNARCHIVE PARTITION(dt='2020-12-24', hr='12');

11.HBASE基本操作

--1.进入
hbase shell
--2.创建表
create 'student','info'
--3.插入数据
put 'student','1001','info:sex','male'
--4.扫描查看表数据
scan 'student'
scan 'student',{STARTROW => '1001', STOPROW  => '1001'}
scan 'student',{STARTROW => '1001'}
--5.查看表结构
describe 'student'
--6.更新指定字段的数据
put 'student','1001','info:name','Nick'
--7.查看 “指定行” 或 “指定列族:列” 的数据
get 'student','1001'
get 'student','1001','info:name'
--8.统计表数据行数
count 'student'
--9.变更表信息
alter 'student',{NAME=>'info',VERSIONS=>3}
get 'student','1001',{COLUMN=>'info:name',VERSIONS=>3}
--10.删除数据
--删除某 rowkey 的全部数据
deleteall 'student','1001'
-- 删除某 rowkey 的某一列数据
delete 'student','1002','info:sex'
--11.清空表数据
truncate 'student'
--12.清空表数据
truncate 'student'
drop 'student'
--提示:清空表的操作顺序为先 disable,然后再 truncate。
--13.查看命名空间
list_namespace
--创建命名空间
create_namespace 'bigdata'
--在新的命名空间中创建表
create 'bigdata:student','info'
--只能删除空的命名空间,如果不为空,需要先删除该命名空间下的所有表
drop_namespace 'bigdata'

12.hive脱敏 中文不会脱敏

select mask('不不不bbb123'); --不不不xxxnnn
序号	策略名	策略说明	Hive 系统函数
1	Redact	用 x 屏蔽字母字符,用 n 屏蔽数字字符	mask
2	Partial mask: show last 4	仅显示最后四个字符,其他用 x 代替	mask_show_last_n
3	Partial mask: show first 4	仅显示前四个字符,其他用 x 代替	mask_show_first_n
4	Hash	用值的哈希值替换原值	mask_hash
5	Nullify	用 NULL 值替换原值	Ranger 自身实现
6	Unmasked	原样显示	Ranger 自身实现
7	Date: show only year	仅显示日期字符串的年份	mask
8	Custom	Hive UDF 来自定义策略	 

13.基于CDH5升级到CDH6.3.x造成的语法兼容

1.传入参数使用STRING
2.'''||value||'''->"'||value||'"
3.""->""
4. 调整成collect_set()函数的使用 hive on mr ,其他使用impala跑进临时表

14.SQL脚本需在代码头部添加说明注释

[示例]
-- ** 所属主题: 交易
-- ** 功能描述: 交易退款分析
-- ** 创建者 : xxx
-- ** 创建日期: 20170616 
-- ** 修改日志:
-- ** v1.0.0.0 20200118 xxx 创建基线
-- ** v1.0.0.1 20200118 xxx 修改大小写规范 [示例]
-- ** modify 20200118 xxx 添加质押比例字段取值 start
nvl(c.en_ratio,0) as plg_rati,  --质押比例
-- ** modify 20200118 xxx 添加质押比例字段取值 end

15.hive 修改字段并指定位置

--将 a 列的名字改为 a1,a 列的数据类型改为 string,并将它放置在列 b 之后。
ALTER TABLE test_change CHANGE a a1 STRING AFTER b;

16.hive中的排序

ORDER BY 全局排序,只有一个Reduce任务
SORT BY 只在本机做排序

17. sqoop将hive中的数据导出到Oracle

sqoop export
#oracle数据库连接
--connect jdbc:oracle:jdbc:oracle:thin:@locallhost:1521/testdb
--username test
--password 123456
--table t_test
# hive表数据文件在hdfs上的路径
--export-dir '/apps/hive/warehouse/dbi.db/t_test/pdt=20191229'
# 指定表的列名,不写会默认全部列
--columns ID,data_date,data_type,c1,c2,c3 
# 列分隔符(根据hive的表结构定义指定分隔符)
--input-fields-terminated-by '\001'
# 行分隔符
--input-lines-terminated-by '\n' 
# 如果hive表中存在null字段,则需要添加参数,否则无法导入
--input-null-string '\\N' 
--input-null-non-string '\\N'  > sqoop_oracle.log 2>&1 &

18. hive 列传行

--hive 列传行
select new_fundaccount,new_bk_tradeaccount,bk_product from stg.tt0liquidateschema_tmp01 
LATERAL VIEW explode(split(fundaccount,','))fundaccount as new_fundaccount
LATERAL VIEW explode(split(bk_tradeaccount,','))bk_tradeaccount as new_bk_tradeaccount;--例子:
create table tmp_dz as                   
select '000855' as bk_product,
'372402834320,37345435345435,37345343434' as fundaccount,
'982342242322342,9842423424,98345333' as tradeaccount from dual;insert into tmp_dz
select '000845' as bk_product,
'37345343454' as fundaccount,
'98345333433' as tradeaccount from dual;select nvl(new_fundaccount,fundaccount) as fundaccount,nvl(new_tradeaccount,tradeaccount) as tradeaccount,bk_productfrom (
SELECT REGEXP_SUBSTR(fundaccount, '[^,]+', 1, ROWNUM) as new_fundaccount,REGEXP_SUBSTR(tradeaccount, '[^,]+', 1, ROWNUM) as new_tradeaccount,t.*FROM tmp_dz t
CONNECT BY ROWNUM <= regexp_count(fundaccount, ',') + 1
) t;

19.hive 列传行 多列逗号分割的字段

-- 测试数据
with temp as(select '1,2,3' as id,'a,b,c' as name union select '4,5,6' as id,'d,e,f' as name)
-- 添加where限制
select id, name, s_id, s_namefrom temp   lateral view posexplode(split(id, ','  )) t as s_id_index,s_id   lateral view posexplode(split(name, ','  )) t as s_name_index,s_namewhere s_id_index = s_name_index

20.CDPhive支持事务,增删改查

--默认是支持update\delete操作,创建表不用指定 transactional=true,创建表并尝试插入数据。
create table cdhadmin_table_hive (col1 int ) ;
--插入操作
insert into table cdhadmin_table_hive values (1);
insert into table cdhadmin_table_hive values (51);
insert into table cdhadmin_table_hive values (2);
insert into table cdhadmin_table_hive values (3);
select * from  cdhadmin_table_hive;--删除操作
delete from cdhadmin_table_hive where col1 = 51;
select * from  cdhadmin_table_hive;
--更新操作
update  cdhadmin_table_hive set col1=300 where col1=3;
select * from  cdhadmin_table_hive;
--使用hive用户,给应用用户赋权,使其可以访问default库。
grant select on database default to user cdhadmin;

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

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

相关文章

【Ubuntu24.04】VirtualBox安装ubuntu-live-server24.04

目录 0 背景1 下载镜像2 安装虚拟机3 安装UbuntuServer24.044 配置基本环境5 总结0 背景 有了远程连接工具之后,似乎作为服务器的Ubuntu24.04桌面版有点备受冷落了,桌面版的Ubuntu24.04的优势是图形化桌面,是作为一个日常工作的系统来用的,就像Windows,如果要作为服务器来…

01.防火墙概述

防火墙概述 防火墙概述1. 防火墙的分类2. Linux 防火墙的基本认识3. netfilter 中五个勾子函数和报文流向 防火墙概述 防火墙&#xff08; FireWall &#xff09;&#xff1a;隔离功能&#xff0c;工作在网络或主机边缘&#xff0c;对进出网络或主机的数据包基于一定的 规则检…

STM32设计井下瓦斯检测联网WIFI加Zigbee多路节点协调器传输

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 本系统基于STM32微控制器和Zigbee无线通信技术&#xff0c;设计了…

Vue 中的透传,插槽,依赖注入

1. 透传attributes 在组件上使用透传attribute&#xff1a; 当你在父组件中使用子组件时&#xff0c;你可以添加一些attribute到子组件上&#xff0c;即使这些attribute没有在子组件的props中声明。 父组件&#xff1a; <!-- 父组件&#xff0c;例如 ParentComponent.vue…

Figma汉化:提升设计效率,降低沟通成本

在UI设计领域&#xff0c;Figma因其强大的功能而广受欢迎&#xff0c;但全英文界面对于国内设计师来说是一个不小的挑战。幸运的是&#xff0c;通过Figma汉化插件&#xff0c;我们可以克服语言障碍。以下是两种获取和安装Figma汉化插件的方法&#xff0c;旨在帮助国内的UI设计师…

SpringBoot项目实现登录——集成JWT令牌和验证码的登录业务

目录 前言 一、初步认识JWT令牌 二、利用JWT令牌实现登录功能 1.配置登录拦截器&#xff1a; 2.实现后端的登录接口 三、在登录中添加验证码功能 点此查看&#xff1a;完整的&#xff0c;附带验证码和JWT令牌验证功能的登录流程&#xff0c;完整代码 前言 在我们的项目…

网络常用特殊地址-127.0.0.1

借用Medium博客的一张图 经常在问题解答群里留意到如下关于127.0.0.1的消息 ”如果单机版&#xff0c;不需要配置IP&#xff0c;所有配置IP的地方都写死127.0.0.1就可以” “ip: 根据实际情况填写&#xff08;在 xxx-init.conf 里可以给一个默认值 127.0.0.1 &#xff0c;方便…

【模拟仿真】基于区间观测器的故障诊断与容错控制

摘要 本文提出了一种基于区间观测器的故障诊断与容错控制方法。该方法通过构建区间观测器&#xff0c;实现对系统状态的上下边界估计&#xff0c;从而在存在不确定性和外部噪声的情况下进行高效的故障诊断。进一步地&#xff0c;本文设计了一种容错控制策略&#xff0c;以保证…

CC4学习记录

&#x1f338; CC4 CC4要求的commons-collections的版本是4.0的大版本。 其实后半条链是和cc3一样的&#xff0c;但是前面由于commons-collections进行了大的升级&#xff0c;所以出现了新的前半段链子。 配置文件&#xff1a; <dependency><groupId>org.apach…

自动化报表怎么写

自动化报表设计 标题 日期 筛选器 具体字段自由字段 迷你图 同环比 条件格式 步骤 填充数值 1、先筛选战区日期sumifs(纯数值-注册人数&#xff0c;纯数值-战区列&#xff0c;周报-战区单元格&#xff0c;纯数值-日期&#xff0c;周报-日期单元格) 需要注意⚠️纯数值里的单元格…

魔改log4j2的JsonLayout,支持自定义json格式日志

小伙伴们&#xff0c;你们好&#xff0c;我是老寇&#xff0c;我又回来辣&#xff0c;1个多月不见甚是想念啊&#xff01;&#xff01;&#xff01;跟我一起魔改源码吧 1.自定义json格式【PatternLayout】 大部分教程都是这个&#xff0c;因此&#xff0c;我就简单给个配置&a…

笔记分享: 西安交通大学COMP551705数据仓库与数据挖掘——02. 关联规则挖掘

文章目录 1. \textbf{1. } 1. 基本概念 2. \textbf{2. } 2. 布尔关联规则 2.1. \textbf{2.1. } 2.1. 一些基本概念 2.2. \textbf{2.2.} 2.2. Apriori \textbf{Apriori} Apriori算法 2.3. \textbf{2.3.} 2.3. Apriori \textbf{Apriori} Apriori算法示例 3. \textbf{3. } 3. 多…

基于标签相关性的多标签学习

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

网站小程序app怎么查有没有备案?

网站小程序app怎么查有没有备案&#xff1f;只需要官方一个网址就可以&#xff0c;工信部备案查询官网地址有且只有一个&#xff0c;百度搜索 "ICP备案查询" 找到官方gov.cn网站即可查询&#xff01; 注&#xff1a;网站小程序app备案查询&#xff0c;可通过输入单位…

手撸 chatgpt 大模型:简述 LLM 的架构,算法和训练流程

本节我们自顶向下看看大模型的相关概念&#xff0c;了解其基本架构以及从零手撸大模型的基本流程。自从 openai 释放了 chatgpt 后&#xff0c;人工智能就立马进入了大模型时代&#xff0c;我还记得在此之前 NLP 的处理主要依赖于深度学习的 LSTM&#xff0c;GRU 等模型架构。这…

爬虫——JSON数据处理

第三节&#xff1a;JSON数据处理 在爬虫开发中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;是最常见的数据格式之一&#xff0c;特别是在从API或动态网页中抓取数据时。JSON格式因其结构简单、可读性强、易于与其他系统交互而广泛应用于前端与后端的数…

SpringBoot集成itext导出PDF

添加依赖 <!-- PDF导出 --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version></dependency><dependency><groupId>com.itextpdf</groupId>&l…

【快速解决】kafka崩了,重启之后,想继续消费,怎么做?

目录 一、怎么寻找我们关心的主题在崩溃之前消费到了哪里&#xff1f; 1、一个问题&#xff1a; 2、查看消费者消费主题__consumer_offsets 3、一个重要前提&#xff1a;消费时要提交offset 二、指定 Offset 消费 假如遇到kafka崩了&#xff0c;你重启kafka之后&#xff0…

查询DBA_FREE_SPACE缓慢问题

这个是一个常见的问题&#xff0c;理论上应该也算是一个bug&#xff0c;在oracle10g&#xff0c;到19c&#xff0c;我都曾经遇到过&#xff1b;今天在给两套新建的19C RAC添加监控脚本时&#xff0c;又发现了这个问题&#xff0c;在这里记录一下。 Symptoms 环境&#xff1a;…

用OMS进行 OceanBase 租户间数据迁移的测评

基本概念 OceanBase迁移服务&#xff08;&#xff0c;简称OMS&#xff09;&#xff0c;可以让用户在同构或异构 RDBMS 与OceanBase 数据库之间进行数据交互&#xff0c;支持数据的在线迁移&#xff0c;以及实时增量同步的复制功能。 OMS 提供了可视化的集中管控平台&#xff…