首页 > 其他分享 >Hive基础命令

Hive基础命令

时间:2024-05-11 10:20:41浏览次数:11  
标签:存储 string create 基础 Hive 命令 table 数据 name

Hive基本操作

1、Hive库操作

1)创建一个数据库,数据库在HDFS上的默认存储路径是/hive/warehouse/*.db

create database testdb;

2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法)

create database if not exists testdb;

2、创建数据库以及位置(loccation)

create databse if not exists testdb;

3、修改数据库

数据库的其他元素都是不可更改的,包括数据库名和数据库所在目录位置,只能修改数据库创建时间(重点关注哪些不能修改和为什么不能修改)

alter database dept set 

4、显示数据库详细信息

显示数据库(show)

show databases;

通过like进行过滤

show databases like 't*'

查看详情(desc)

desc database testddb;

查看详情(更加详细)

desc formatted testdb;

删除数据库(删除的数据库进入到回收站中)

最简写法

drop database testdb;

判断是否存在,能减少报错

drop database if exists testdb;

想要强制删除在后面加上cascade

drop database if exists testdb cascade;

6、数据类型

6.1、基础数据类型

最常用的类型:bigint,decimal(precision,scale)string,tiimestamp,boolean

类型 Java数据类型 描述
TINYINT byte 8位有符号整型。取值范围:-128~127。
SMALLINT short 16位有符号整型。取值范围:-32768~32767。
INT int 32位有符号整型。取值范围:-2 31 ~2 31 -1。
BIGINT long 64位有符号整型。取值范围:-2 63 +1~2 63 -1。
BINARY 二进制数据类型,目前长度限制为8MB。
FLOAT float 32位二进制浮点型。
DOUBLE double 64位二进制浮点型。
DECIMAL(precision,scale) 10进制精确数字类型。precision:表示最多可以表示多少位的数字。取值范围:1 <= precision <= 38。scale:表示小数部分的位数。取值范围: 0 <= scale <= 38。如果不指定以上两个参数,则默认为decimal(10,0)。
VARCHAR(n) 变长字符类型,n为长度。取值范围:1~65535。
CHAR(n) 固定长度字符类型,n为长度。最大取值255。长度不足则会填充空格,但空格不参与比较。
STRING string 字符串类型,目前长度限制为8MB。
DATE 日期类型,格式为yyyy-mm-dd。取值范围:0000-01-01~9999-12-31。
DATETIME 日期时间类型。取值范围:0000-01-01 00:00:00.000~9999-12-31 23.59:59.999,精确到毫秒。
TIMESTAMP 与时区无关的时间戳类型。取值范围:0000-01-01 00:00:00.000000000~9999-12-31 23.59:59.999999999,精确到纳秒。说明 对于部分时区相关的函数,例如cast( as string),要求TIMESTAMP按照与当前时区相符的方式来展现。
BOOLEAN boolean BOOLEAN类型。取值:True、False。

6.2 复杂的数据类型

类型 定义方法 构造方法
ARRAY array<int>``array<struct<a:int, b:string>> array(1, 2, 3)``array(array(1, 2), array(3, 4))
MAP map<string, string>``map<smallint, array<string>> map(“k1”, “v1”, “k2”, “v2”)``map(1S, array(‘a’, ‘b’), 2S, array(‘x’, ‘y’))
STRUCT struct<x:int, y:int>struct<field1:bigint, field2:array<int>, field3:map<int, int>> named_struct(‘x’, 1, ‘y’, 2)named_struct(‘field1’, 100L, ‘field2’, array(1, 2), ‘field3’, map(1, 100, 2, 200))

7、表操作

Hive存储格式:textfile,sequencefile,avro,rcfile,orcfile,parquet

textfile:
	正常的文本格式,是Hive的默认文件存储格式,可以直接进行读取,但是占用存储空间较大,一般只有与其它系统进行交互的接口使用textfile格式,其他的事实表(存有事实记录的表,比如系统日志,销售记录)和维度表(查找表,比如时间表(存储与时间对应的周、月、季度等对的属性),地点表(包含国家、省、州、城市等信息))不建议使用

rcfile:
	record columnar的缩写,是hadoop中的第一个列式文件格式,能很好的压缩和快速的查询,写操作比较慢,且比非列式的文件格式需要更多的内存空间和计算量
	
ordfile:
	orcfile是列式文件存储格式,拥有很高的压缩比,对于mapreduce来说是可切分对的,可以节省HDFS的存储资源,对于数据的查询和处理性能有很多大的提升
	
Parquet:
通常我们使用关系数据库存储结构化数据,而关系数据库中使用数据模型都是扁平式的,遇到诸如数组、Map和自定义Struct的时候就需要用户在应用层解析。但是在大数据环境下,通常数据的来源是服务端的埋点数据,很可能需要把程序中的某些对象内容作为输出的一部分,而每一个对象都可能是嵌套的,所以如果能够原生的支持这种数据,这样在查询的时候就不需要额外的解析便能获得想要的结果。Parquet的灵感来自于2010年Google发表的Dremel论文,文中介绍了一种支持嵌套结构的存储格式,并且使用了列式存储的方式提升查询性能。Parquet仅仅是一种存储格式,它是语言、平台无关的,并且不需要和任何一种数据处理框架绑定。这也是parquet相较于orc的仅有优势:支持嵌套结构。Parquet 没有太多其他可圈可点的地方,比如他不支持update操作(数据写成后不可修改),不支持ACID等.

SEQUENCEFILE:
SequenceFile是Hadoop API 提供的一种二进制文件,它将数据以<key,value>的形式序列化到文件中。这种二进制文件内部使用Hadoop 的标准的Writable 接口实现序列化和反序列化。它与Hadoop API中的MapFile 是互相兼容的。Hive 中的SequenceFile 继承自Hadoop API 的SequenceFile,不过它的key为空,使用value 存放实际的值, 这样是为了避免MR 在运行map 阶段的排序过程。SequenceFile支持三种压缩选择:NONE, RECORD, BLOCK。 Record压缩率低,一般建议使用BLOCK压缩。 SequenceFile最重要的优点就是Hadoop原生支持较好,有API,但除此之外平平无奇,实际生产中不会使用。

AVRO:
Avro是一种用于支持数据密集型的二进制文件格式。它的文件格式更为紧凑,若要读取大量数据时,Avro能够提供更好的序列化和反序列化性能。并且Avro数据文件天生是带Schema定义的,所以它不需要开发者在API 级别实现自己的Writable对象。Avro提供的机制使动态语言可以方便地处理Avro数据。最近多个Hadoop 子项目都支持Avro 数据格式,如Pig 、Hive、Flume、Sqoop和Hcatalog。
	
	

8、创建表:

官网的标准方式:

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]


字段解释说明:
- CREATE TABLE 
	创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。

- EXTERNAL
	关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)
	创建内部表时,会将数据移动到数据仓库指向的路径(默认位置);
	创建外部表时,仅记录数据所在的路径,不对数据的位置做任何改变。在
	删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。

- COMMENT:
	为表和列添加注释。

- PARTITIONED BY
	创建分区表

- CLUSTERED BY
	创建分桶表

- SORTED BY
	不常用

- ROW FORMAT 
  DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char] [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char] | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
	用户在建表的时候可以自定义SerDe或者使用自带的SerDe。
	如果没有指定ROW FORMAT 或者ROW FORMAT DELIMITED,将会使用自带的SerDe。
	在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的SerDe,Hive通过SerDe确定表的具体的列的数据。
	SerDe是Serialize/Deserilize的简称,目的是用于序列化和反序列化。

- STORED AS指定存储文件类型
	常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列式存储格式文件)
	如果文件数据是纯文本,可以使用STORED AS TEXTFILE。
	如果数据需要压缩,使用 STORED AS SEQUENCEFILE。

- LOCATION :
	指定表在HDFS上的存储位置。

- LIKE
	允许用户复制现有的表结构,但是不复制数据。
建表1:全部使用默认建表方式
create table IF NOT EXISTS students
(
    id bigint,
    name string,
    age int,
    gender string,
    clazz string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; // 必选,指定列分隔符 
建表2:指定location (这种方式也比较常用)
create table IF NOT EXISTS students2
(
    id bigint,
    name string,
    age int,
    gender string,
    clazz string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/bigdata27/input1'; // 指定Hive表的数据的存储位置,一般在数据已经上传到HDFS,想要直接使用,会指定Location,通常Locaion会跟外部表一起使用,内部表一般使用默认的location


create table IF NOT EXISTS person_avg_counts
(
	name string,
	avg_count bigint
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/bigdata29/out4'; 



建表3:指定存储格式
create table IF NOT EXISTS test_orc_tb
(
    id bigint,
    name string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS ORC
LOCATION '/bigdata29/out6'; // 指定储存格式为orcfile,inputFormat:RCFileInputFormat,outputFormat:RCFileOutputFormat,如果不指定,默认为textfile,注意:除textfile以外,其他的存储格式的数据都不能直接加载,需要使用从表加载的方式。
建表4:create table xxxx as select_statement(SQL语句) (这种方式比较常用)
create table IF NOT EXISTS bigdata29.students(id bigint,name string,age int,gender string,clazz string)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

create table IF NOT EXISTS bigdata29.xuqiu2(clazz string,number bigint)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

insert into students3_1 values(1002,'吴小康',19,'男','27期特训营');

create table students4 as select * from students2;
建表5:create table xxxx like table_name 只想建表,不需要加载数据
create table students5 like students;

简单用户信息表创建:

create table t_user(
id int,
uname string,
pwd string,
gender string,
age int
)
row format delimited fields terminated by ','
lines terminated by '\n';

数据

1,admin,123456,男,18
2,zhangsan,abc123,男,23
3,lisi,654321,女,16

复杂人员信息表创建:

create table IF NOT EXISTS t_person(
name string,
friends array<string>,
children map<string,int>,
address struct<street:string ,city:string>
)
row format delimited fields terminated by ',' -- 列与列之间的分隔符
collection items terminated by '_' -- 元素与元素之间分隔符
map keys terminated by ':' -- Map数据类型键与值之间的分隔符
lines terminated by '\n';  -- 行与行之间的换行符

数据

songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,beng bu_anhui
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,he fei_anhui

标签:存储,string,create,基础,Hive,命令,table,数据,name
From: https://www.cnblogs.com/peculiar/p/18185912

相关文章

  • Hive优化
    hive优化1、hive的随机抓取策略hive中的sql都应该经过解析器,编译器,优化器和执行器产生mapreduce作业进行处理,但是在我们使用过程中,对于一些进行查询之类的任务的时候并没有产生mapreduce任务进行处理,这是因为hive的抓取策略帮我们省略了这个步骤,将split切片的过程体欠安帮我们做......
  • Hive安装与搭建
    Hive安装搭建1、上传解压配置环境变量#1、解压tar-zxvfapache-hive-3.1.2-bin.tar.gz-C/usr/soft/#2、重名名mvapache-hive-3.1.2-binhive-3.1.2#3、配置环境变量vim/etc/profile#4、在最后增加配置exportHIVE_HOME=/usr/local/soft/hive-3.1.2exportPA......
  • 通过tftp或SSH中scp命令在linux服务器和linux开发板之间传输文件
    V1.02024年5月11日发布于博客园目录传送文件tftp协议★SSH协议scp命令SSH在Linux中连接另一个Linux配置开发板初始配置网络配置DNS文件配置脚本文件参考文档传送文件tftp协议#从电脑的TFTP主目录传送文件(比如a.txt)到开发板参数-g获取-r指定文件名tftp-g<......
  • JAVA下载安装配置基础
    JAVA下载安装配置基础JDK、JRE、JVMJDK:JavaDevelopmentKitJava开发者工具,他包含JRE和JVMJRE:JavaRuntimeEnvironmentJava运行时环境包含JVMJVM:JAVAVirtualMachineJave虚拟机下载配置JDK搜索下载JDK8(目前使用率较高的版本)安装JDK记住安装的路径进入高......
  • JAVA 启动常用命令
    nohupjava-jarxxx.jar&--运行jar文件ssh关闭也继续运行nohupjava-jar-Xms512m-Xmx1024mxxx.jar&--指定内存运行jar文件ssh关闭也继续运行nohupjava-jar-Xms512m-Xmx1024m&nohupjava-Dfile.encoding=utf-8-jar-Xms512m-Xmx1024m&以utf-8编码......
  • Java web基础
    1、理解Jsp的page指令JSP(JavaServerPages)中的<%@page%>指令用于设置整个JSP页面的属性。它通常位于JSP页面的顶部,用于指定页面的一些配置信息。生存周期仅限制在本页面。2、理解Jsp的include指令在JSP中,<%@include%>指令用于在一个JSP页面中包含另一个文件的内容。这个指......
  • 计算机基础-服务器安装
    一、下载windows-server2016镜像安装windowsserver系统,略二、给服务器添加各种管理角色三、域服务配置提供对局域网内的计算机管理和域账户管理四、DNS服务配置提供局域网内的DNS解析功能......
  • 计算机基础-网络
    一、网络设备a.网卡(无线、有线)物理层:提供物理地址,也叫MAC地址b.网线(双绞线)、光缆c.交换机、集线器arp链路层:提供局域网内计算机与路由器之间建立端口映射,mac与IP的链路绑定d.路由器网络层:为局域网内计算机分配IP地址、防火墙、上网限制、网速控制登录e.服务器传输层:为局......
  • hive on spark配置
     hive-site.xml <?xmlversion="1.0"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><configuration>  <!--配置Hive保存元数据信息所需的MySQLURL地址-->  <property>    <name>javax......
  • docker的一些命令 以及dockerFile语法
    文件夹重新命名mvnode-v14.18.1-linux-x64node-v14.18.1dokcer命令 将linux的文件复制到docker容器里面       dockercp/usr/local/node-v14.18.1/8ec26052dfad:/usr/local/node-v14.18.1将docker容器里面的文件复制到linux       dockerc......