Hive使用技巧总结

Hive:Hive Shell技巧 S参数, "silent"(静默) , Hive 会减少输出的信息量,只显示查询结果,而不会显示额外的日志或进度信息。在终端命令窗口不能直接执行select,creat等HQL命令,需要先进入hive之后才能执行,比较麻烦,但是如果使用Hive Shell就可以直接执行。表明作业是在 YARN 上运行的,YARN 是 Hadoop 的资源管理器,通常与 MapReduce 和 Spark 作业一起使用。-e 参数, "execute"(执行),使用-e参数后会在执行完Hive的命令后退出Hive。 阅读详情

1.在Hive中可以使用正则表达式

set hive.support.quoted.identifiers=None; 
select a.pin, `(pin)?+.+` from Table

2.输出表数据时,显示列名

set hive.cli.print.header=true;

3.排序优化

order by全局排序,一个reduce实现,不能并行故效率偏低;
sort by部分有序,配合distribute by使用;
cluster by col1 == distribute by col1 sort by col1,但不能指定排序规则;

4.join优化

多表join的key值统一则可以归为一个reduce;
先过滤后join;
小表在前读入内存,大表在后;
使用left semi join 代替in功能,效率更高;
小表join大表时数据倾斜优化:

select t1.a,t1.b from table t1 join table2 t2  on ( t1.a=t2.a)
select /*+ mapjoin(t1)*/ t1.a,t1.b from table t1 join table2 t2  on ( t1.a=t2.a)

5.分区插入

静态插入:需要指定插入的分区dt,name的值;

insert overwrite table test partition (dt='2018-10-17', name='a') 
select col1, col2 from data_table where dt='2018-10-17' and  name='a';

动态插入:可以自动从列中匹配分区,查询时分区放在最后;

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table test partition (dt, name) 
select col1, col2, dt, name from data_table where dt='2018-10-17';

6.抽样

---   随机排序后取前10个
select * from table1 distribute by rand() sort by rand() limit 10
select * from table1 order by rand() limit 10 --不可分布式,效率低
---   抽样函数
select * from table1 tablesample(50 PERCENT)
select * from table1 tablesample(1M)
select * from table1 tablesample(10 ROWS)
---   创建分桶表
create table bucketed_user(id int ,name string) 
clustered by (id)  sorted by (name)  --指定分桶列和排序列
into 4 buckets 
row format delimited fields terminated by '\t' stored as textfile;
---   向分桶表中插入数据
set hive.enforce.bucketing=true;(hive2.0好像没有这个参数)
insert overwrite rable bucketed_users select id,name from users ;
select * from bucketed_users tablesample(bucket 1 out of 2 on id);
#从1号bucket起抽取  2/总bucket个数  个bucket的数据

7、时间戳格式

十三位时间戳格式转化
from_unixtime(cast(substr(time_stamp,1,10) as bigint), 'yyyy-MM-dd')

8、行列转换

行转列

--  某一列中由多个元素
use cf_tmp; 
create table cf_tmp.table1 as 
select  1 as id, array(1,2,3) as col1, 'aa\;bb\;cc' as col2 ;
--  只有它一列时,可以直接行转列
select explode(col1) from table1 ;
select explode(splite(col2, '\;') ) from table1 ;
--  但当有其他列需要保留时,类似聚合
select id, tag 
from table1 
lateral view explode(split(col2, '\;')) num as tag ;

列转行

use cf_tmp; 
create table cf_tmp.table2 as  
select 1 as id, 'a' as col1 
union all 
select 2 as id, 'b' as col1  ;
--  去重合并
select id, concat_ws(',',collect_set(col1)) as tag
from table2 
group by id ;
--  不去重合并
select id, concat_ws(',',collect_list(col1)) as tag
from table2 
group by id ;

998.与presto的差异

presto具有严格的数据类型,在做比较时两侧类型必须严格相同,手动转换。

cast(a as bigint)>b
cast(6 as double)/4
6*1.0/4

时间函数的差异性

dt=cast(current_date+interval '-1' day as varchar)#昨天
dt=date_format(current_timestamp-interval '1' month, '%Y-%m-01')#上个月1日
dt=date_format(cast(date_format(current_timestamp , '%Y-%m-01') as date) - INTERVAL '1' DAY, '%Y-%m-%d') #上个月底

999.数据拆分行

分行

hive使用技巧及调优心得 1、在比较bigint和string的时候显示的指定两者的类型,除了注意数据类型能否转换以外,还需要关注两点, 阅读详情

相关推荐

大数据领域Hive的外部表使用技巧

在大数据处理中,Hive作为一个基于Hadoop的数据仓库基础设施,提供了类似于SQL的查询语言HQL,方便用户对存储在Hadoop分布式文件系统(HDFS)中的数据进行查询和分析。Hive的外部表是一种重要的数据管理方式,本文章的目的在于深入探讨Hive外部表的使用技巧,涵盖从基本概念、创建和管理,到在实际项目中的应用等方面,帮助读者更好地利用Hive外部表进行大数据处理和分析。本文将按照以下结构进行组织:首先介绍Hive外部表的核心概念与联系,包括其与内部表的区别等;

大数据洞察的博客 1075

hiveSql学习

1、如何将多字段拼接成一个字段,并且排除原始表中的某些字段 (user_pin)?+.+就是不需要user_pin字段,属于高阶用法 insert overwrite table user_table partition(dt='2020-11-21') select user_pin, a.`(dt)?+.+`, b.`(user_pin)?+.+` from user_table a left join ( select user_pin, conc

CommunicationJava的博客 502

实测iOS和安卓大不同!用NFC触发小程序跳转的完整避坑指南(含NFC Tools配置)

本文深入解析iOS与安卓在NFC触发小程序跳转时的核心差异,提供微信与支付宝小程序的NFC实现方案及优化技巧。涵盖跨平台兼容性测试方法论、性能优化策略及异常处理方案,帮助开发者避开常见陷阱,提升跳转成功率。特别针对NFC Tools配置和微信Universal Link使用进行详细指导。

asdfghjkl978564的博客 434

hive函数总结

hive函数总结 1.时间函数 (1)创建日期维度表 WITH dates AS( SELECT DATE_SUB(DATE_ADD("${start_date}", a.pos),0) AS d FROM (SELECT POSEXPLODE(SPLIT(REPEAT("o", DATEDIFF("${end_date}", "${start_date}")), "o"))) a ) select * from dates 参考:https://blog.csdn.net/

qq_42937659的博客 386

从芯片选型到光学集成:手持激光测距仪硬件设计全解析

本文全面解析手持激光测距仪的硬件设计,从芯片选型到光学集成,详细介绍了相位法测距技术的核心原理与方案选择。通过模块化设计、信号链路优化及PCB布局技巧,实现毫米级精度。文章还分享了量产化关键控制点,帮助工程师规避常见设计陷阱,提升产品可靠性。

weixin_30425949的博客 445

PID不够用?试试用ADRC改造你的ArduCopter:从Simulink仿真到SITL测试全记录

本文详细介绍了如何将ADRC(自抗扰控制)算法集成到ArduPilot飞控中,以替代传统PID控制器。通过Simulink建模、参数整定和SITL仿真测试,展示了ADRC在抗扰动能力、响应速度和参数调节复杂度上的优势,特别适合无人机在强风扰动下的稳定控制。

weixin_32349093的博客 273

hive/spark--select `(ds|hr)?+.+`

这个sql代表 从 表table_a 中select 出来 除了colum_a和colum_b的所有列。

qq_46893497的博客 886

FPGA串口通信----uart(一)

通过PLL锁相环IP的使用,可以输入时钟进行分频,倍频,也可以产生多路时钟输出信号。外部提供晶振的原因:①Fpga电路大多数需要时序分析②晶振在Fpga内部占空间大,所以放置于外部PCB板上Uart异步传输速率不能很快的原因:考虑到工程实际问题,假如时钟周期大(传输速率慢的话),采取到数据电平变化的边沿时刻的概率会小很多,这样数据也很准确,通常uart适用于2M.

mvpkuku的博客 970

Hive使用技巧

最近的工作主要集中在数据分析,建立数仓并进行数据的分析,故记录一些相关技巧 1.collect_set/collect_list 两者多进行列转行,使得一个用户的数据聚合到一起 不同点:collect_set去重,collect_list不去重 使用size()可以计算其中的类别个数 使用array_contains(str1,str2)判断str1中是否包含str2 判断不包括!array_contains(str1,str2) 2.concat /concat_ws 主要用于列值的合并

zoe_ranxiaosu的博客 456

国税局发票查验中英文验证码识别最新版,识别率99.9%

采用深度学习进行发票查验验证码模型的训练,在我电脑上模型训练的环境如下: 显卡:RTX 2080TI tensorflow-gpu:2.5.3 1 训练集和测试集的准备 发票查验的验证码分为4种类型,分别为黑色、红色、黄色、蓝色,经过我的测试,采用4个模型的效果最好,每个模型对应识别一种类型的验证码。 首先我们4种类型的验证码都准备10万张。 00黑色类型的验证码: 01红色类型的验证码: 02黄色类型的验证码: 03蓝色类型的验证码: 验证码图像图像准备好后,对其进行标记,也就是对验证码重命名:

Keras深度学习 83万+

手把手教你学Simulink——机器人力控场景实例:基于Simulink的永磁同步电机重力补偿力矩控制仿真

本文介绍了基于Simulink的机器人重力补偿力矩控制仿真方法。针对机器人悬停时电机发热、抖动等问题,提出通过前馈补偿重力转矩的解决方案。文章详细阐述了从机器人动力学建模、重力补偿计算、PMSM转矩控制到系统集成的完整实现流程,并以2-DOF机械臂为例验证了补偿效果。结果表明,重力补偿能显著降低电机电流和拖拽力,提高系统柔顺性。文中还提供了高级功能扩展方向,如参数辨识、摩擦补偿等,为实际工程应用提供了参考框架。

MHD0815的博客 154

Hive小技巧及优化

查询除了ds 和 hr 之外的所有列 SELECT `(ds|hr)?+.+` FROM sales https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select#LanguageManualSelect-REGEXColumnSpecification 修改表生命周期(ODPS) ALTER TABLE...

大数据hive教程详解 526

Dify 第 2 篇 Dify 插件离线安装

Dify是一个支持插件扩展的AI平台,其插件市场提供5种类型插件(模型、工具、Agent策略、扩展、插件包)。由于默认pip安装速度慢,可通过dify-plugin-repackaging工具将插件转换为离线包(使用阿里云镜像加速)。该工具提供两种方式:1)自备Python环境执行脚本;2)使用Docker环境(推荐)。脚本支持从Dify市场或GitHub下载插件,并重新打包为含依赖的离线包,便于通过"本地插件"方式快速安装。

甘蓝的专栏 1265

关于Hive命令的7个小技巧,你都清楚吗?

前言         最近在看冰河大佬写的《海量数据处理与大数据技术实战》,该书涵盖以Hadoop为主的多款大数据技术框架实战的内容,兼顾理论与实操,是市面上难得的技术好书。本篇文章,我就分享一下从中学习到的关于Hive命令的7个小技巧,受益的朋友记得来发三连⭐支持一下哟~ Hive命令说明         在Hive提供的所有连接方式中,命令行界

大数据梦想家 4089

32GB Jetson Orin SOM 不能刷机问题排查

拿到了一个新的Orin SOM,当用orin Devkit CVB或定制的CVB不能用Linux_For_Tegra刷机,flash日志(JetPack5.0DP和5.0.1DP都失败了) 2. 确认mb2配置中将CVB的eeprom读取大小设置是否为0 ? 已经确认是正常的 在定制的orin cvb flash上使用Orin devkit som,启动是成功的。但新得到的Orin som并不工作可以排除理由:使用Orin Devkit CVB和Orin SOM(不是Devkit SOM)仍然不能

jzwjzw19900922的博客 1499

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

关于Hive使用的一些技巧

第四种默认设置:hive在安装的时候会有元数据,元数据中的设置为默认设置,假如你想更改设置,需要自己编写一个hive-site.xml ,在这个文件中想顶掉哪个默认设置就写哪个。第一种和第二种其实是一种,生命周期都是客户端进入,hive进入后,会自动加载.hiverc文件,将里面的set执行一遍。假如窗口中设置以窗口为准,顶掉前面所有地方的设置,假如.hiverc设置,.hiverc 中的设置会顶替到它之前所有的设置,以此类推。假如 .hiverc 中也有相同的配置,以.hiverc 为准。

Yz9876的博客 982

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

hive java包_HIVE一些小技巧和java操作hive

打开微信扫一扫,关注微信公众号【数据与算法联盟】1.写在前边的话自己电脑上部署的hive版本是hive1.1.1,在终端执行hive 命令时,凡是涉及where语句时,就会出现异常退出,对于一个开发者怎么能忍受这种情况,于是果断升级到hive1.21同时需要注意的是在hive 1.1.1版本中创建table的时候,最后凡是添加一个stored as…的时候也会报错退出,暂时不清楚原因,不过小主估计...

weixin_39560207的博客 334

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

hive小技巧

1、显示表头(列明) set hive.cli.print.header=true 2、hive code2 增大资源配置 set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict; set hive.exec.max.dynamic.partitions=80000; set hive.exec.max.dynamic.partitions.pernode=10000; set map

Howe的博客 3856

一起学Hive——总结常用的Hive优化技巧

1

iqifenxia的博客 896

hive sql常用技巧

1.多行合并 多行合并常用于做区间统计,通过定义一定的金额区级,将上亿的记录降维为不同区间内总数。概括来说就是多映射到一。典型场景:基于用户交易天流水,计算每天不同金额段的金额笔数。 如用户的天交易流水表结构如上,需要计算出交易额在0-100,100-200,200-300,大于300几个区级的笔数, CREATE VIEW t_deal_tmp_view_1 AS SELECT CAS...

lv_hulk的博客 465

hive 使用技巧笔记

来源:http://michael-roshen.iteye.com/blog/2115268 例子: INSERT OVERWRITE TABLE prices_collected_${hiveconf:wid_version} select pc.collect_id as product_id , regexp_extract(pc.pri...

weixin_33994444的博客 111

05 | Hive使用技巧

新版本的Hive启动的时候,默认申请的JVM堆内存大小为256M,JVM堆内存申请的太小,导致后期开启本地模式,执行复杂的SQL时经常会报错:java.lang.OutOfMemoryError: Java heap space,因此最好提前调整一下HADOOP_HEAPSIZE这个参数。(1)修改$HIVE_HOME/conf下的hive-env.sh.template为hive-env.sh。(2)将hive-env.sh其中的参数 export HADOOP_HEAPSIZE修改为2048,

走过冬季 805

hive java程序_HIVE一些小技巧和java操作hive

1.写在前边的话自己电脑上部署的hive版本是hive1.1.1,在终端执行hive 命令时,凡是涉及where语句时,就会出现异常退出,对于一个开发者怎么能忍受这种情况,于是果断升级到hive1.21同时需要注意的是在hive 1.1.1版本中创建table的时候,最后凡是添加一个stored as…的时候也会报错退出,暂时不清楚原因,不过小主估计也是hive版本的问题。(因为...

weixin_34180753的博客 232

hive简介及使用技巧

1.HIVE简介 ​ Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张数据库表,并提供简单的sql查询功能,可以将sql语句转化为mapreduce任务进行运行。hive定义了简单的类sql查询语言,称为HQL,允许熟悉SQL的用户查询数据。同时这个语言也允许熟悉MapReduce的开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法处理的复杂的分析工作。 2.HIVE-DDL Hive建表(压缩表和非压缩表) 一个表可以拥有一个或

qq_38963685的博客 536

hive进阶 技巧

1.日期格式转换(将yyyymmdd转换为yyyy-mm-dd) select from_unixtime(unix_timestamp('20180905','yyyymmdd'),'yyyy-mm-dd') 2..hive去掉字段中除字母和数字外的其它字符 select regexp_replace(a, '[^0-9a-zA-Z]', '') from tbl_name ...

weixin_30685029的博客 136

Linux中的hive使用小技巧

Linux中的hive使用小技巧 1 在hive中可以看出我们在那一层中,而且可以显示表中的字段 2 配置如下(CDH中): 目录如下:在目录汇总添加如下参数(为隐藏文件使用 ls -a 命令查看即可) /opt/cloudera/parcels/CDH/lib/hive/bin ...

weixin_48370579的博客 182
上一篇: 使用随机森林做特征选择
下一篇: 正则表达式
LightsUpW
博客等级 码龄10年 2粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值