Hive基本操作日记

以前自建部署的hive on hdfs数据仓库21年早已下线,本文档为当时简单做的日记,偶然整理文档发现,弃之可惜, 本文章留作未来可能参考使用。

自建hive维护成本太高,HDFS又太重,中小公司的趋势还是适合采用低成本的云厂商方案EMR+COS 存储数据; 且目前更流行湖仓一体+存算分离解决方案,比如京东将StarRocks当做一个请求客户端,通过创建各种数据源(Paimon、Hbase、ElasticSearch)的catalog,统一采用SQL处理数据,这样对于数据分析人员或者开发人员只需要连接对应的数据源编写SQL,降低了学习成本;对公司来说也确实达到了降本增效的目的。

废话不说了,

创建表语法结构

复制代码
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type
[COMMENT col_comment], ...)] [COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)]
INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]

修改hive元数据表的编码方式

创建表前需要修改hive对应元数据库编码格式,否则会中文乱码

查看Hive元数据库的编码方式

show create database hive;

修改元数据的元数据表的编码格式

创建表前需要修改hive对应元数据库编码格式,否则会中文乱码。

查看hive元数据库的编码方式

show create database hive;

修改元数据的元数据表的编码格式
修改表字段注解和表注解

alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;

alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

修改分区字段注解

alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;

alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;

修改索引注解

alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

修改 metastore 的连接 URL

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://IP:3306/db_name? createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8</value>

<description>JDBC connect string for a JDBC metastore</description>

</property>

表操作

创建外部分区表,与内部表相比,外部表仅由Hive 管理元数据,数据文件可以存储到HDFS的任何地方;而内部表由Hive全权管理数据和元数据。

当执行删除表的操作时,外部表只是删除了表结构的元数据,真正的数据仍在;

而内部表做删除操作时,会把表结构和数据一起删除。

添加字段

alter table ods_chat_msg add columns(offline string comment '离线');
alter table ods_chat_msg add columns

(

order_source string comment '订单来源',

mid string comment '新会员id',

bank_name string comment '银行行名'

);

修改注释

alter table ods_chat_msg change column bank_name bank_name string comment '分行/支行名称'

添加分区

alter table ods_chat_msg add if not exists partition(date_time='2088-08-18',type='liaozhongmin');

删除分区

alter table ods_chat_msg drop if exists partition(d='2015-01_24');

查看分区

show partitions ods_chat_msg ;

本地数据文件装载到数据表

load data local inpath '/root/a.txt' into table trade_detail;

HDFS 数据文件装载到数据表

load data inpath '/target.txt' into table trade_detail;

装载数据到指定分区表

load data local inpath '/home/a/part-00000' overwrite into table ods_chat_msg partition (resultDate='2010-08-22');

导出数据到本地文件

用HUE不好吗,谁用这玩意啊

hive -e "use chat;select * from ods_chat_msg where resultdate='2018-11-01' limit 1" > /var/lib/hadoop-hdfs/output.txt

相关推荐
tsyjjOvO1 天前
SpringMVC 从入门到精通
数据仓库·hive·hadoop
Francek Chen1 天前
【大数据存储与管理】分布式数据库HBase:05 HBase运行机制
大数据·数据库·hadoop·分布式·hdfs·hbase
zzzzzwbetter1 天前
Hadoop完全分布式部署-Master的NameNode以及Slaver2的DataNode未启动
大数据·hadoop·分布式
weixin_449310841 天前
ETL转换和数据写入小满OKKICRM的技术细节
数据仓库·php·etl
IvanCodes1 天前
Hive IDE连接及UDF实战
ide·hive·hadoop
yumgpkpm1 天前
华为昇腾910B 开源软件GPUStack的介绍(Cloudera CDH、CDP)
人工智能·hadoop·elasticsearch·flink·kafka·企业微信·big data
lifewange2 天前
Hive数据库
数据库·hive·hadoop
五月天的尾巴3 天前
hive数据库模糊查询表名
hive·查询表名
蓝魔Y3 天前
hive—1.1、执行优化
hive
快乐非自愿3 天前
OpenClaw 生态适配:Hadoop/Hive 技能现状与企业级集成方案
大数据·hive·hadoop·分布式·openclaw