Hive--基础操作、数据类型和文本文件格式

Hive数据存储格式有哪些?TextFile、SequenceFile、RCFile、ORCFile、Parquet有什么区别?为什么绝大多数都使用ORCFile、Parquet格式? 通过 ORC 这些索引,可以快速定位满足查询的数据块,规避大部分不满足查询条件的文件和数据块,相比于读取传统的数据文件,进行查找时需要遍历全部的数据,使用 ORC 可以避免磁盘和网络 I/O 的浪费,提升程序的查找效率,提升整个集群的工作负载。Parquet 在存储数据时,也同 ORC 一样记录这些数据的元数据,这些元数据也同 Parquet 的文件结构一样,被分成多层文件级别的元数据、列块级别的元数据及页级别的元数据。Hive 是面向 OLAP 的,所以它的事务也和 RDMBS 的事务有一定的区别。 阅读详情

1 Hive的基础操作和数据类型

1.1 Hive的基础操作

1.1.1 Hive命令

    假定已将hive命令配置到环境变量中。

    进入hive安装目录的bin目录下,执行hive --help命令,显示出:

Usage ./hive <parameters> --service serviceName <service parameters>
Service List: beeline cli help hiveserver2 hiveserver hwi jar lineage metastore metatool orcfiledump rcfilecat schemaTool 
Parameters parsed:
  --auxpath : Auxillary jars 
  --config : Hive configuration directory
  --service : Starts specific service/component. cli is default
Parameters used:
  HADOOP_HOME or HADOOP_PREFIX : Hadoop install directory
  HIVE_OPT : Hive options
For help on a particular service:
  ./hive --service serviceName --help
Debug help:  ./hive --debug --help

    注意Service List后面的内容即为所有的服务,下表提供了其中最有用的几个服务。


1.1.2 命令行界面

    命令行界面,也就是CLI,是和Hive交互的最常用的方式。使用CLI,用户可以创建表,检查模式以及查询表,等等。

1. CLI选项

    执行hive --service cli --help,控制台输出:

usage: hive
 -d,--define <key=value>          Variable subsitution to apply to hive
                                  commands. e.g. -d A=B or --define A=B
    --database <databasename>     Specify the database to use
 -e <quoted-query-string>         SQL from command line
 -f <filename>                    SQL from files
 -H,--help                        Print help information
 -h <hostname>                    connecting to Hive Server on remote host
    --hiveconf <property=value>   Use value for given property
    --hivevar <key=value>         Variable subsitution to apply to hive
                                  commands. e.g. --hivevar A=B
 -i <filename>                    Initialization SQL file
 -p <port>                        connecting to Hive Server on port number
 -S,--silent                      Silent mode in interactive shell
 -v,--verbose                     Verbose mode (echo executed SQL to the

    这个命令的一个简化版是./hive -help。注意和./hive --help做区分。

2.变量和属性

    Hive中变量和属性命名空间有4种:hivevar、hiveconf、system、env。hivevar命名空间指的是用户自定义的变量,hiveconf命名空间指的是Hive相关属性的配置,system命名空间指的是Java定义的配置属性,env命名空间指的是Shell环境定义的变量信息,如HADOOP_HOME。


    进入Hive的CLI,可以使用set这个命令来显示或者修改变量值。

    使用

set;
或者

set -v;
可以显示命名空间hivevar、hiveconf、system、env中所有的变量,使用-v参数,还可以显示出Hadoop中定义的所有属性,例如控制HDFS和MapReduce的属性。

1)hivevar

如何定义一个命名空间为hivevar的变量呢?

$ hive --define key=value
简写 hive -d key=value
或$ hive --hivevar key=value

sql语句:

$ hive --define foo=bar;
Logging initialized using configuration in jar:file:/usr/hive/hive-0.12.0/lib/hive-common-0.12.0.jar!/hive-log4j.properties
hive> set foo;
foo=bar
hive> set hivevar:foo;
hivevar:foo=bar
hive> set hivevar:foo=bar2; 
hive> set hivevar:foo;
hivevar:foo=bar2
hive> set foo;
foo=bar2

    由此可以看出,hivevar命名空间中hivevar:前缀是可以省略的,但是system、env等前缀是不可以省略的。所以下面的两个sql语句是等价的。

hive> create table toss1(i int, ${hivevar:foo} string);

hive> create table toss2(i2 int, ${foo} string);

    注意:在CLI中查询语句中的变量引用会先被替换掉,然后才会将查询语句交给查询处理器。

2)hiveconf

    hiveconf命名空间下有一个hive.cli.print.current.db属性,该属性的值默认是false,开启该属性可以在CLI提示符前打印出当前所在的数据库名,默认的数据库名是default。

sql语句

$ hive --hiveconf  hive.cli.print.current.db=true
Logging initialized using configuration in jar:file:/usr/hive/hive-0.12.0/lib/hive-common-0.12.0.jar!/hive-log4j.properties
hive (default)> set hiveconf:hive.cli.print.current.db;
hiveconf:hive.cli.print.current.db=true
hive (default)> set hiveconf:hive.cli.print.current.db=false;
hive> set hiveconf:hive.cli.print.current.db=true;
hive (default)> 

3)system和env

    system命名空间,Java系统属性对这个命名空间具有可读可写权利;而env命名空间,对于环境变量只提供可读权权限。

    用户使用system变量和env变量时,必须使用system:和env:前缀来指定系统属性和环境变量。

    env命名空间可以作为向Hive传递变量的一个可选方式,例如:

$ YEAR=2012 hive -e "slect * from mytable where year = ${env:YEAR}";
    查询处理器会在where子句中查看到实际的变量值2012。

3.Hive命令运行方式

1)使用hive执行一次SQL语句,在linux命令行下使用hive -e "SQL语句" 

2)把查询结果导入到某个文件,在linux命令行下使用hive -e "SQL语句"> /tmp/myquery

3)安静模式下执行SQL语句,在linux命令行下使用hive -S -e "SQL语句"

4)执行某个文件中的SQL语句,在linux命令行下使用hive -f 文件名

5)执行本地某个脚本文件中的SQL语,在linux命令行下使用 source 文件名。

    也可以进入hive命令行中执行本地的文件中的SQL语句


4.hiverc文件

      当CLI启动时,在提示符出现之前会先执行这个文件,Hive会自动在${HIVE_HOME}/bin目录下寻找名为.hiverc文件,所以我们可以在这个文件中配置一些常用的参数。由于它是隐藏文件,我们可以用Linux的ls -a命令查看。

#在命令行中显示当前数据库名
set hive.cli.print.current.db=true; 
#查询出来的结果显示列的名称
set hive.cli.print.header=true;
#启用桶表
set hive.enforce.bucketing=true;
#压缩hive的中间结果
set hive.exec.compress.intermediate=true;
#对map端输出的内容使用BZip2编码/解码器
set mapred.map.output.compression.codec=org.apache.hadoop.io.compress.BZip2Codec;
#压缩hive的输出
set hive.exec.compress.output=true;
#对hive中的MR输出内容使用BZip2编码/解码器
set mapred.output.compression.codec=org.apache.hadoop.io.compress.BZip2Codec;
#让hive尽量尝试local模式查询而不是mapred方式
set hive.exec.mode.local.auto=true;

5.hive中执行shell命令和hadoop命令

    在hive cli中,可以直接执行shell命令和hadoop的dfs命令。

    执行shell命令时,只要在命令前加上!并且以分号(;)结尾就可以。

   但是hive cli中不能使用需要用户进行输入的交互式命令,而且不支持shell的“管道”功能和文件名的自动补全功能。例如! ls *.hql; 这个命令表示的是查找文件名为“*.hql”的文件,而不是表示显示以.hql结尾的文件。

     执行hadoop的dfs命令时,只需要将命令中的hadoop关键字省略,然后以分号结尾。


1.2 数据类型和文本文件格式

1.2.1 数据类型

    Hive支持关系型数据库中的大多数基本数据类型,同时也支持关系型数据库中很少出现的3种集合数据类型。

1.基本数据类型


2. 集合数据类型

    Hive中的列支持使用struct,map和array集合数据类型。

定义一个employees表

hive (default)> create table employees (
              > name string, 
              > salary float,
              > subordinates array<string>,
              > decuctions map<string,float>,
              > address struct<street:string,city:string,state:string,zip:int>);
    其中,定义员工name为string类型,salary(薪水)为float类型,subordinates(下属员工)为字符串数组类型,deductions(税收)为由key-value构成的map类型,address(地址)为struct类型,其中每个域都被做了命名,并且有一个特定的类型。

1.2.2 文本文件格式

    Hive中默认的记录和字段分隔符。


hive (default)> create table employees (name string, salary float,subordinates array<string>,decuctions map<string,float>,address struct<street:string,city:string,state:string,zip:int>) 
              > row format delimited 
              > fields terminated by '\001'
              > collection items terminated by '\002'
              > map keys terminated by '\003'
              > lines terminated by '\n'
              > stored as textfile;

    这个SQL语句创建的表的结构和之前的那个表是一样的,只不过是明确指定了分隔符。


Hive执行计划之什么是hiveSQL向量化模式及优化详解 Hive开启向量化模式也是hiveSQL优化方法中的一种,可以提升hive查询速率,也叫hive矢量化。 阅读详情

相关推荐

Hive基础应用

一. Hive基础概念 hive数据模型 数据类型 2.1 数值型 类型 说明 TINYINT 1-byte signed integer from -128 to 127 SMALLINT 2-byte signed integer from -32,768 to 32,767 INT INTEGER 4-byte signed integer from -2,147,483,648 to ...

qq_45763007的博客 277

hive学习小记1

1、变量和属性 hive中有四个命名空间来存储变量和属性。 hivevar -> 用户自定义变量 hiveconf -> hive相关配置属性 system -> java程序中的配置属性 env -> shell环境中的变量 设置变量 hive>set hivevar:test=aaa; 读取变量 hive>set hivevar:foo=b...

wz1226864411的博客 400

Hive(一)数据类型、文件格式和数据定义

1、基本数据类型 Hive支持多种不同长度的整型和浮点型数据类型,支持布尔类型,也支持无长度限制的字符串类型,后续的Hive增加了时间戳数据类型和二进制数组数据类型。 和其他的SQL语言一样,这些都是保留字。需要注意的是所有的这些数据类型都是对Java中接口的实现,因此这些类型的具体行为细节和Java中对应的类型是完全一致的。例如,STRING类型实现的是Java中的String,FLOAT

技术小白 6717

HIVE的数据储格之文本文件格式

  Hive的存储是建立在Hadoop文件系统之上的,Hive没有专门的数据存储格式,也不能为数据建立索引,用户可以自由的组织Hive中的表,所以用户可以选择将数据存储为纯文本文件。在hive建表的过程中,可以在CREATE TABLE 后用STORED AS <FILE_FORMAT> 来指定将要存储的文件格式,其中FILE_FORMAT可选项包含TEXTFILE , SEQUEN...

weixin_30485291的博客 276

Hive的数据存储格式

Hive存储格式 Hive建表格式

weixin_42771366的博客 1461

突发E层(Es层):短波通信中的“意外惊喜”与“隐形杀手”全解析

本文深入解析了突发E层(Es层)在短波通信中的双重作用,既可能带来超远距离通信的“意外惊喜”,也可能成为通信链路的“隐形杀手”。通过分析Es层的形成机制、时空分布规律及实战应用技巧,帮助通信爱好者与专业人员更好地利用或应对这一电离层现象,提升短波通信的可靠性与效率。

weixin_30443813的博客 828

【大数据之Hive】十九、Hive之文件格式和压缩

ORC是列式存储的文件格式,可以提高hive读写数据和处理数据的性能。左边为逻辑表。右边第一个为行式存储:取文件的一行数据存储到相邻的位置;第二个为列式存储:取文件的一列数据存储到相邻的位置。查询满足条件的一整行数据的时候,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。列式存储查找一行数据时需要去每个字段中找对应的每个列的值。因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;

阿宁的博客 1661

C# 操作Excel的时候,出现"被呼叫方拒绝接受呼叫的异常"的解决方案(参考官方给出的解决方案)

首先官方有对这个错误给出解释和解决方案,连接如下: https://docs.microsoft.com/zh-cn/previous-versions/ms228772(v=vs.120)#%E5%8F%AF%E9%9D%A0%E7%BC%96%E7%A8%8B 简单来说,貌似是线程问题,我猜。。。 之前我尝试着在代码中添加 Thread.Sleep(1000); 来进行解决,这种办...

Ck_Max的博客 5770

Hive数据类型和文件格式

转换的原则是从数据范围小的类型向数据范围大的类型转换,或从数据精度低的类型向数据精度高的类型转换,以保证数据和精度不丢失。employees表的第1行记录看上去和下面展示的一样,它用到了上面表格中的分隔符。Hive中经常经使用未经压缩的文本文件来存储数据,各字段之间如何保证正确分隔,分隔符的选择十分重要,已选定的分隔符不能出现在数据中。Hive 的 STRING 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不限定最多能存储多少个字符,理论上它可以存储 2GB 的字符数。

W_chuanqi的博客 2323

C# .NET6 TesseractOCR 图片文字识别

在你的项目中的tessdata-main文件夹找到这几个文件,并右键->属性设置为【如果较新则复制】有几个需要用到的模型,需要生成的时候复制到输出目录中,在项目中设置即可。TesseractOCR兼容 x86 与 x64。附 :ImageUtils.RegionCropping()源码。Visual Studio 2022 社区版。下载完成后解压在你的项目中,如图所示。从官方项目中获取模型数据, 网址为。

qq_44121554的博客 3854

02 - GRACE数据处理步骤简叙

本篇对GRACE数据处理的过程进行了介绍,简单叙述了进行数据各种改正的原因,可以帮助理解GRACE数据处理理论,本文借鉴了多篇优秀博士论文。希望可以对👪有所帮助。

weixin_43339605的博客 3348

Hive中的数据类型和存储格式总结

Hive中的数据类型和存储格式总结

limenghao2002的博客 1937

【入门AUTOSAR网络管理测试】RSS-PBM状态转换

随着智能电动汽车行业的快速发展,目前AUTOSAR网络管理也得到了广泛应用,AUTOSAR网络管理测试也是汽车网络测试中非常重要的环节,NM问题导致的汽车ECU不能唤醒、电瓶亏电等问题,对于新入门AUTOSAR网络管理测试的同学不清楚如何开展测试,那么本章节就主要给大家介绍网络管理中RSS-PBM状态转换如何测试。【入门AUTOSAR网络管理测试】AUTOSAR网络管理规范需求解读。

测试领域技术分享 872

数据仓库Hive编程——数据类型和文件格式(三):文本文件数据编码

分类目录:商业智能《数据仓库Hive编程》总目录 下面我们一起来研究文件格式,首先举个最简单的例子,也就是文本格式文件。毫无疑问,用户应该很熟悉以逗号或者制表符分割的文本文件,也就是所谓的逗号分隔值(CSV)或者制表符分割值(TSV)。只要用户需要,Hive是支持这些文件格式的,在后面的文章将会介绍其具体使用方式。然而,这两种文件格式有一个共同的缺点,那就是用户需要对文本文件中那些不需要作为分隔符...

冯·诺依曼 1万+

PX4从放弃到精通(二十二):日志

文章目录前言一、下载日志二、ulog转CSV三、利用flightplot软件分析PX4的ulog日志1 windos安装2 ubuntu18.04安装四、使用PlotJuggler分析PX4日志五、设置日志记录条件六、添加自定义日志消息 前言 PX4 1.10以上固件 QGC 一、下载日志 将飞控链接地面站,在下图页面点击“刷新”,即可看到保存的日志(前提是要有TF卡) 选择需要下载的日志,点击右侧的“下载”,然后选择目录即可进行下载,如果想擦除所有的日志,可以点击右侧的“擦除全部” 二、ulog转CS

超维空间科技的博客 6802

微信小程序 - 解决请求报错 request:fail errcode:-201 cronet_error_code:-201 error_msg:net::ERR_CERT_DATE_INVALID

微信小程序报错“request:fail errcode:-201 cronet_error_code:-201 error_msg:net::ERR_CERT_DATE_INVALID“,微信小程序请求报错,微信小程序errcode:-201,服务器报错,无法调用接口,微信小程序真机https请求失败,微信小程序wx.request接口报错,小程序真机调试运行接口都报错了,真机测试下网络请求都不行了且报错,证书没问题依旧报错,检查HTTPS证书,ssl证书,使用浏览器测试访问证书是正常的,不是证书问题,请

🏆 前端领域优质创作者 1万+

数据仓库工具Hive——数据类型&文件编码格式

Hive 中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格、“\t”、“\x001”)、行分隔符(“\n”)以及读取文件数据的方法。对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数.Hive表中的数据在存储在文件系统上,Hive定义了默认的存储格式,也支持用户自定义文件存储格式。这些类型名称都是 Hive 中保留字。

qq_43408367的博客 2682

某联达OA任意用户登录漏洞复现

由于`/WebService/Lk6SyncService/DirectToOthers/GetSSOStamp.asm`j接口未作限制,导致可以通过该接口调用`admin`的`cookie`值,通过对`LoginCredence`和`LoginTimestamp`的参数修改,进而实现任意登录进去系统.

千寻的博客 1589

Hive SQL数据类型和存储格式

一、数据类型 1、基本数据类型 hive支持关系型数据中大多数基本数据类型 类型 描述 示例 boolean true/false TRUE tinyint 1字节的有符号整数 -128~127 1Y smallint 2个字节的有符号整数,-32768~32767 1S int 4个字节的带符号整数 ...

chengbai121444的博客 2134

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

[Hive] 03 - 基础知识之【数据类型、文本文件数据编码、文件存储格式、读时模式】

环境 宿主机:Windows 10 64_bit 虚拟机:VMware pro 12 CentOS 7.5 64_bit Hadoop-2.6.5 MariaDB-5.5.60 Hive 1.2.2 SecureCRT 7.3 目录 0、Hive-数据类型 ----0.0 基本(数据)类型(Primitive Types) ----0.1 复杂/集合(数据)类型(Complex Typ...

神是念着倒 1383

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Hive中的数据类型和文件格式

Hive支持关系型数据库中的大多数基本数据类型,同时支持关系型数据库中很少出现的3种集合数据类型,下面我们将简短地介绍一下这样做的原因。   其中一个需要考虑的因素就是这些数据类型是如何在文本文件中进行表示的,同时还要考虑文本存储中为了解决各种性能问题以及其他问题有哪些替代方案。和大多数的数据库相比,Hive具有一个独特的功能,那就是其对于数据在文件中的编码方式具有非常大的类活性。大多数的数据库对

universe_ant的博客 6247

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Hive数据库系列--Hive数据类型/Hive字段类型/Hive类型转换/文本文件数据编码

本章主要讲解hive的数据类、字段类型

weixin_49114503的博客 3933

数据仓库Hive编程——数据类型和文件格式(一):基本数据类型

分类目录:商业智能《数据仓库Hive编程》总目录 Hive支持关系型数据库中的大多数基本数据类型,同时也支持关系型数据库中很少出现的3种集合数据类型, 其中一个需要考虑的因素就是这些数据类型是如何在文本文件中进行表示的,同时还要考虑文本存储中为了解决各种性能问题以及其他问题有哪些替代方案。和大多数的数据库相比,Hive具有一个独特的功能,那就是其对于数据在文件中的编码方式具有非常大的灵活性。大多数...

冯·诺依曼 1万+

Hive学习之路 (六)Hive SQL之数据类型和存储格式

目录 一、数据类型 1、基本数据类型 2、复杂类型 二、存储格式 (1)textfile (2)SequenceFile (3)RCFile (4)ORCFile (5)Parquet 三、数据格式 正文 回到顶部 一、数据类型 1、基本数据类型 Hive 支持关系型数据中大多数基本数据类型 类型 描述 示例 b...

一尘在心的博客 687

hive 修改表的存储格式_Hive基础之DDL操作

DML(Data Manipulation Language) 数据操纵语言 :主要用来对数据库的数据进行一些操作,常用的就是INSERT、UPDATE、DELETE。 DDL (Data Define Language) 数据定义语言:常用的有CREATE和DROP,用于在数据库中创建新表或删除表,以及为表加入索引等 DCL(Data Control Language) 数据控制语言:通过GRA...

weixin_30694389的博客 2133
上一篇: HBase—过滤器
下一篇: Hive--HiveQL:数据定义、数据操作
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值