Hive日常操作

模糊搜索表:show tables like '*name*';

查看表结构:desc table_name

查看表的详细信息:desc formatted table_name

查看分区信息:show partitions table_name;

根据分区查询数据:select table_coulm from table_name where partition_name = '2018-11-01';

删除分区:alter table table_name drop partition(dt='2018-11-01');

修改表名: alter table table_name rename to table_name_new;

复制表结构:CREATE TABLE table_name LIKE table_name_old;

添加字段:alter table table_name add columns(site_uv bigint comment '到站UV');

查看hdfs文件信息:dfs -ls /user/hive/warehouse/table_name;

查询结果导出到文件

insert overwrite local directory '/tmp/output' select * from table_name;
insert overwrite local directory '/tmp/output' 
row format delimited fields terminated by ',' 
select * from table_name

-- 或者

hive -e 'select * from table_name' > /tmp/output

kill hive job:hadoop job -kill job_201811011453_58225

<> 这个符号是不等于的意思,相当于 !=

hive查询显示列名

set hive.cli.print.header=true; // 打印列名
set hive.cli.print.row.to.vertical=true; // 开启行转列功能, 前提必须开启打印列名功能
set hive.cli.print.row.to.vertical.num=1; // 设置每行显示的列数

从文件加载数据进表(OVERWRITE覆盖,追加不需要OVERWRITE关键字)

LOAD DATA LOCAL INPATH 'dim_config.txt' OVERWRITE into table default.dim_config;

--从查询语句给table插入数据
INSERT OVERWRITE TABLE dim_config PARTITION(ds) select * from default.dim_config_old where ds='2018-11-01';

自定义udf函数

1. 继承UDF类
2. 重写evaluate方法
3. 把项目打成jar包
4. hive中执行命令add jar /home/root/dw_etl/pub/udf/GetProperty.jar;
5. 创建函数 create temporary function get_pro as 'bi.Get_Property';

开启简单模式不启用mr: set hive.fetch.task.conversion=more;

hive默认分隔符 \001

hive命令行中查看当前hive环境变量 !env

hive命令行中查看当前hive及hadoop环境变量 set -v

sqoop导出sequencefile格式的文件时需要特殊处理(自行百度),默认需要使用textfile

Hive将一行记录拆分成多行

select username,browse_product 
from default.user_browse 
lateral view explode(split(product, ',')) virtual_table_name as browse_product;

hive子查询时的错误Unsupported SubQuery Expression : Correlating expression cannot contain unqualified column references

原因:hive子查询列名要具有确定性,需要给表加个别名 select b from tablename t1 where t1.b in (select b from t2);

hive优化原则

  • hive优化原则,减小map数,减少job数

hive优化参数

set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
set mapred.max.split.size=268435456;
set hive.merge.size.per.task=268435456;
set hive.merge.smallfiles.avgsize=134217728;

hive异常定位

  • hive创建有分区到外部表时,一定要先增加分区,然后才能查到数据,如果不手动新增分区是查不到数据的 LTER TABLE adcall ADD IF NOT EXISTS PARTITION(day='$date', hou='$hour');
  • hive查询时需要估算下结果的大小,特别时有子查询时,会把查询结果存放到本地,防止中间结果太多硬盘满了
  • hive查询不动了,假死,首先查看NodeManager的日志,多半是NodeManager挂掉了,或者处于unhealthy state状态
  • job执行报错,可能就是nodemanager的问题,而不是resourcemanager的问题
欢迎订阅「K叔区块链」 - 专注于区块链技术学习

博客地址:http://www.jouypub.com

简书主页:https://www.jianshu.com/u/756c9c8ae984

segmentfault主页:https://segmentfault.com/blog/jouypub

腾讯云主页:https://cloud.tencent.com/developer/column/72548

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术碎碎念

sql server 事务处理

事物处理 事务是SQL Server中的单个逻辑单元,一个事务内的所有SQL语句作为一个整体执行,要么全部执行,要么都不执行。 事务有4个属性,称为ACID(原...

3798
来自专栏Hongten

SQL 语句大全

1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备...

1332
来自专栏我的博客

ADODB简介以及简单使用

1、adodb数据库类介绍(http://adodb.sourceforge.net/) 虽然 PHP 是建构 Web 系统强有力的工具,但是 PHP 存取数据...

3487
来自专栏自由而无用的灵魂的碎碎念

Oracle:创建db_link

global_name也就是数据库的全局数据库名,可已使用select * from global_name;查询:

842
来自专栏禅林阆苑

Sphinx&coreseek实现中文分词索引

众所周知,mysql等数据库的LIKE模糊搜索不支持索引,因此查询效率极低,需要结合第三方索引引擎程序(索引程序)来提高查询性能。

2213
来自专栏沃趣科技

配置详解 | performance_schema全方位介绍

在上一篇 《初相识 | performance_schema全方位介绍》 中粗略介绍了如何配置与使用performance_schema,相信大家对perfor...

1.3K7
来自专栏解Bug之路

MySql之自动同步表结构

在开发过程中,由于频繁的修改数据库的字段,导致rd和qa环境的数据库表经常不一致。 而由于这些修改数据库的操作可能由多个rd操作,很难一次性收集全。人手工去和...

621
来自专栏数据和云

查看SQL执行计划的方法及优劣

作者 | 胡佳伟:云和恩墨技术工程师,有多年数据库优化经验,在一线执行过多个包括通信、保险等行业的优化项目。

1102
来自专栏Spark学习技巧

phoenix二级索引

二级索引 二级索引是从主键访问数据的正交方式。Hbase中有一个按照字典排序的主键Rowkey作为单一的索引。不按照Rowkey去读取记录都要遍历整张表,然后按...

6469
来自专栏杨建荣的学习笔记

关于自动化平台的动态菜单设计

最近几天是马不停蹄的做一些事情,今天计划把通用功能的部分先改进一些,比如说菜单的权限配置。目前使用的方案是用户可以看到所有的菜单,如果没有权限,则返回一个权限不...

4064

扫码关注云+社区