hive创建表格,简单创建及复杂创建(指定分隔符,存储格式、分区等)

本文主要是介绍hive创建表格,简单创建及复杂创建(指定分隔符,存储格式、分区等),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、hive表格简单创建
create table test(id int,name string,tel string)
然后show tables 就可以查看到已创建的表格了
2、指定分隔符存储格式
create table test(id int, name string ,tel string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'LINES TERMINATED BY '\n'STORED AS TEXTFILE;
其中,FIELDS TERMINATED BY '\t' 是指定字段分隔符也可用用其他符号如“,”,“|”等等,LINES TERMINATED BY '\n'是指定行分隔符(一般不写,默认是换行符)
3、指定存储格式
create table test(id int, name string ,tel string)
STORED AS TEXTFILE;

上面语句就是创建文本格式的表格,一般如果集群的hdfs没有设置文件格式,hive表格默认的便是txt文本格式的,可通过命令
Hadoop fs -cat /表格目录/*   (*或者文件名)查看到文件的内容。hive表格也可以设置其他格式,STORED AS SEQUENCEFILE 设置为sqquencefile格式;STORED AS RCFILE 设置为rcfile格式;要根据需求不同设置不同的存储格式,而且每种存储格式的优势是不相同的,在此不讨论。
4、指定存储目录
create table test(id int,name string,tel string)  
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
STORED AS TEXTFILE 
LOCATION '/data/test'; 

上面语句中LOCATION '/data/test' 便是指定了表格在hdfs存储的目录,建表完成可在/data/下看到已创建test目录,指定目录一般在大型集群上比较常用的,因为集群的规模越大,使用者就越多,集群管理者便会对用户做权限管理,权限管理中必定会涉及对hdfs的目录进行管理,这个时候用户可能没有默认warehouse目录的权限了,建表便需要指定表格目录了

5、指定分区
create table test(id int, name string ,tel string) 
partitioned by (age int) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
STORED AS TEXTFILE

partitioned by (age int)语句便是指定age字段为分区字段

create table test(id int, name string ,tel string) 
partitioned by (age int,class string) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
STORED AS TEXTFILE

上面语句指定了age,class两个分区字段,分区其实对应hdfs上的目录结构,如有一个age分区,表格的数据便存储在“表格目录/age”中,两个分区age,class,表格数据便存储在“表格目录/age/class”中;合理的分区在数据量大的表中是必要的,一本可以优化表格数据的查询速度,可可以对数进行简单的分类,一般大数据量的表中必有时间字段的分区

6、建立外部表
create EXTERNAL table test(id int, name string ,tel string) 
partitioned by (age int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;

外部表其实跟内部表格没有太大的区别,多了EXTERNAL关键字,外部表可以映射到其他目录,alter table test add partition (age=17) location '/user/oi/ts/17'; 这样便把ts目录下的数据映射到了test表中,可以查到数据select * from test where test=17; 当然前提是外部目录下的数据格式要与表格的格式一直,如上,17目录下的数据必须是三个字段的,且是逗号分割的,文本文件;外部表格在删除表格的时候,并不会删除数据,外部表格可以建立在已存在的目录或文件上,更加灵活
7、建立桶表 bucket table

create table test(id int,name string)
CLUSTERED BY(id) SORTED BY(name) INTO 32 BUCKETS    
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';
桶是更为细粒度的数据范围划分,它能使一些特定的查询效率更高,
比如对于具有相同的桶划分并且jion的列刚好就是在桶里的连接查询,还有就是示例数据,
对于一个庞大的数据集我们经常需要拿出来一小部分作为样例,然后在样例上验证我们的查询,优化我们的程序。





这篇关于hive创建表格,简单创建及复杂创建(指定分隔符,存储格式、分区等)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1015408

相关文章

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4