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 条评论
登录 后参与评论

相关文章

来自专栏性能与架构

HBase 的表结构

HBase 是一个NoSQL数据库,用于处理海量数据,可以支持10亿行百万列的大表,下面就了解一下数据是如何存放在HBase表中的 关系型数据库的表结构 为了更...

45113
来自专栏解Bug之路

MySql之自动同步表结构

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

991
来自专栏james大数据架构

微软官方提供的用于监控MS SQL Server运行状况的工具及SQL语句

Microsoft SQL Server 2005 提供了一些工具来监控数据库。方法之一是动态管理视图。动态管理视图 (DMV) 和动态管理函数 (DMF) 返...

2967
来自专栏乐沙弥的世界

Oracle 10.2.0.1 升级到 10.2.0.4

数据库升级并不难,只要遵循其步骤,一般问题不大。但是升级失败的情况也是屡见不鲜,尤其是生产数据库的升级,搞不定的时候甚至要创建SR。

1703
来自专栏码云1024

mysql数据库

4757
来自专栏禅林阆苑

Sphinx&coreseek实现中文分词索引

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

3093
来自专栏数据和云

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

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

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

Oracle:创建db_link

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

922
来自专栏JMCui

SQL优化二(SQL性能调优)

一·、前言:这篇博文内容非原创,是我们公司的架构师给我们做技术培训的时候讲的内容,我稍微整理了下,借花献佛。这篇博文只是做一个大概的科普介绍,毕竟SQL优化的知...

4106
来自专栏沃趣科技

配置详解 | performance_schema全方位介绍

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

1.7K7

扫码关注云+社区

领取腾讯云代金券