上篇文章我们在服务器上部署了Hive并将它的Metastore存储在了MySQL上,本文介绍一下Hive的数据类型以及常用的一些属性配置。关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~


目录

一、Hive的数据类型

1.1 基本数据类型

1.2 集合数据类型

1.2.1 介绍

1.2.2 示例

1.3 数据类型转换

二、常用的属性配置

2.1 HiveServer2服务

2.2 Hive的交互命令

2.3 Hive的其他命令

2.4 常用的属性配置

2.4.1 查询显示表头信息

2.4.2 显示当前数据库名称

2.4.3 配置Hive数据仓库位置

2.4.4 配置Hive运行日志信息存放位置

2.4.5 参数配置的优先级


一、Hive的数据类型

1.1 基本数据类型

Hive的基本数据类型有10种,如下所示:

Hive数据类型

对应的Java数据类型

长度

TINYINT

byte

1byte有符号整数

SMALINT

short

2byte有符号整数

INT

int

4byte有符号整数

BIGINT

long

8byte有符号整数

BOOLEAN

boolean

布尔类型,true或者false

FLOAT

float

单精度浮点数

DOUBLE

double

双精度浮点数

STRING

string

字符系列,可以指定字符集,可以使用单引号或者双引号。相当于数据库的varchar类型

TIMESTAMP

时间类型

BINARY

字节数组

1.2 集合数据类型

1.2.1 介绍

数据类型

描述

语法示例

STRUCT

通过“点”符号访问元素内容。例如,如果某个列的数据类型是STRUCT{one STRING, two STRING},那么第1个元素可以通过字段.one来引用。

struct()

例如struct<person:string, city:string>

MAP

MAP是一组键-值对元组集合,使用数组表示法可以访问数据。例如,如果某个列的数据类型是MAP,其中键->值对是’one’->’xzw’和’two’->’yxy’,那么可以通过字段名[‘two’]获取最后一个元素

map()

例如map<string, int>

ARRAY

数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。例如,数组值为[‘one’, ‘two’],那么第2个元素可以通过数组名[1]进行引用。

Array()

例如array<string>

Hive有三种复杂数据类型STRUCT、ARRAY和MAP。STRUCT与C语言中的Struct类似,它封装了一个命名字段集合。ARRAY和MAP与Java中的Array和Map类似。复杂数据类型允许任意层次的嵌套。

1.2.2 示例

1、现有如下的数据

[{"name": "xzw","loc": ["qd" , "zb"],"city": {"ta": 4,"qd": 3}"subject": {"dm": "Python" ,"reg": "bigdata" }
},
{"name": "yxy","loc": ["bj" , "sh"],"city": {"bj": 1,"sh": 3}"subject": {"dm": "Java" ,"reg": "AI" }
}]

2、首先我们需要构造一下导入Hive中的数据文件,数据文件如下所示:

xzw,qd|zb,ta:4|qd:3,Python|bigdata
yxy,bj|sh,bj:1|sh:3,Java|AI

值得注意的是,MAP,STRUCT和ARRAY里的元素间关系都可以用同一个字符表示,这里用“|”。构造好的test.txt文件放到/root/files目录下。

3、创建Hive表

create table test(
name string,
loc array<string>,
city map<string, int>,
subject struct<dm:string, reg:string>
)
row format delimited fields terminated by ','
collection items terminated by '|'
map keys terminated by ':'
lines terminated by '\n';

4、加载数据到Hive表中

load data local inpath '/root/files/test.txt' into table test;

5、查询测试

1.3 数据类型转换

Hive的数据类型是可以进行隐式转换的,其规则如下:

(1)任何整数类型都可以隐式地转换为一个范围更广的类型,如TINYINT可以转换成INT,INT可以转换成BIGINT。
(2)所有整数类型、FLOAT和STRING类型都可以隐式地转换成DOUBLE。
(3)TINYINT、SMALLINT、INT都可以转换为FLOAT。
(4)BOOLEAN类型不可以转换为任何其它的类型。
(5)可以使用CAST操作显示进行数据类型转换。例如CAST('1' AS INT)将把字符串'1' 转换成整数1;如果强制类型转换失败,如执行CAST('X' AS INT),表达式返回空值 NULL。

二、常用的属性配置

在讲解常用的属性配置之前,我们先来看一下怎样访问或者是连接Hive以及Hive常用的一些交互命令等,这对后续属性配置的讲解有一个打基础的作用。

2.1 HiveServer2服务

HiveServer2(HS2)是服务器接口,使远程客户端执行对Hive的查询和检索结果。换句话说,可以使用JDBC通过HiveServer2服务对Hive进行访问。以下便是如何开启HiveServer2服务。

1、首先通过以下命令启动HiveServer2服务:

hiveserver2

2、启动beeline

beeline

3、连接HiveServer2服务

通过以下命令连接HiveServer2服务:

!connect jdbc:hive2://master:10000

2.2 Hive的交互命令

可以通过如下命令,查看Hive都有哪些交互命令:

hive -help

常用的交互命令可以参考我的另外一篇博客:《Hive通过-f调用sql文件并进行传参》。

2.3 Hive的其他命令

1、在命令行查看hdfs文件系统

dfs -ls /;

2、在命令行查看本地文件系统

!ls /root/files;

3、查看在Hive中输入的历史命令

在根目录下有一个叫做.hivehistory的命令,如下图所示:

2.4 常用的属性配置

2.4.1 查询显示表头信息

在hive-site.xml中添加如下配置:

<property><name>hive.cli.print.header</name><value>true</value>
</property>

2.4.2 显示当前数据库名称

在hive-site.xml中添加如下配置:

<property><name>hive.cli.print.current.db</name><value>true</value>
</property>

2.4.3 配置Hive数据仓库位置

默认数据仓库的最原始位置是在hdfs上的/user/hive/warehouse路径下。在仓库目录下,没有对默认的数据库default创建文件夹。如果某张表属于default数据库,它会直接在数据仓库目录下创建一个文件夹。在hive-site.xml中添加如下配置解决此问题:

<property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse/default</value><description>location of default database for the warehouse</description>
</property>

并修改执行权限:

hdfs dfs -chmod g+w /user/hive/warehouse/default

在default数据库中新建一张表进行测试:

可以发现在default数据库中新建的表都出现在了hdfs上的default目录下:

2.4.4 配置Hive运行日志信息存放位置

默认情况下,Hive的日志信息存放在/tmp/root/目录下:

修改hive-log4j.properties文件将日志信息放到指定位置,这里有个问题出现了,有的小伙伴发现在hive测conf目录下,没有这个配置文件,所以,在修改这个配置文件之前,还需要进行一步下面的操作:

此时,修改配置文件中的对应参数即可:

2.4.5 参数配置的优先级

在Hive的参数配置中,有三种参数的配置方式,分别如下。

1、通过配置文件。默认的配置文件是hive-default.xml,用户自定义的配置文件是hive-site.xml。用户自定义配置会覆盖默认配置。另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。配置文件的设定对本机启动的所有Hive进程都有效。2、在命令行中通过set添加配置,例如:set mapred.reduce.tasks=100;。这种方式是临时修改配置文件,当Hive下次启动时,将会失效。3、在启动Hive时通过设置参数-hiveconf来设置,例如:hive -hiveconf mapred.reduce.tasks=10。同样的,这种方式是临时修改配置文件,当Hive下次启动时,将会失效。

上述三种设定方式的优先级为修改配置文件<命令行参数<参数声明。

本文到此就接近尾声了,你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题~

三十、Hive的数据类型以及常用的属性配置相关推荐

  1. bigint hive java类型_三十、Hive的数据类型以及常用的属性配置

    上篇文章我们在服务器上部署了Hive并将它的Metastore存储在了MySQL上,本文介绍一下Hive的数据类型以及常用的一些属性配置.关注专栏<破茧成蝶--大数据篇>,查看更多相关的内 ...

  2. JavaScript学习(六十六)—字符串对象常用的属性和方法总结以及数组元素的排序问题

    JavaScript学习(六十六)-字符串对象常用的属性和方法总结以及数组元素的排序问题 学习内容 一.数组去重问题 二.二维数组的定义 三.二维数组的元素操作 四.二维数组的遍历 五.关联数组 六. ...

  3. echarts 之常用的属性配置

    目录 echarts 之常用的属性配置 饼形图相关 柱状图相关 简单的柱状图 多柱状图 折线图 echarts 之常用的属性配置 饼形图相关 series: [{type: "pie&quo ...

  4. MySQL数据类型和常用字段属性总结

    前言 好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键.MySQL提供了一组可以赋给表中各个 ...

  5. Redis(三)、支持数据类型及常用操作命令

    Redis支持的数据结构及命令 第1章 支持数据结构类型 你也许已经知道Redis并不是简单的key-value存储,实际上他是一个数据结构服务器,支持不同类型的值.也就是说,你不必仅仅把字符串当作键 ...

  6. Android 天气APP(三十二)快捷切换常用城市

    上一篇:Android 天气APP(三十一)每日提醒弹窗 快捷切换常用城市及每日弹窗优化 前言 正文 一.创建适配器 二.配置列表加载常用城市数据 三.添加到常用城市列表 四.修改UI 文末 前言   ...

  7. mysql常用数据类型的属性有哪些_MySQL数据类型和常用字段属性总结

    日期和时间数据类型 date 3字节,日期,格式:2014-09-18 time 3字节,时间,格式:08:42:30datetime 8字节,日期时间,格式:2014-09-18 08:42:30t ...

  8. python获取当前网页元素_Python+Selenium练习(三十)- 获取页面元素的href属性

    目标:通过Selenium获取页面元素的某一个属性.一个元素可能有多个属性,例如class,id,name,text,href,value等. 练习场景:找出当前页面的所有超链接.例:打印出百度首页所 ...

  9. 精选Spring Boot三十五道必知必会知识点!

    Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家.本文精选了三十五个常见的Spring Boot知识点,祝你一臂之力! 问题一 Spr ...

最新文章

  1. oracle sql statement ignored,sql – Oracle无效使用类型名称或子类型名称
  2. 加了try的情况下线程中抛出未捕获的异常
  3. left join 和 left outer join 的区别【转】
  4. 解决 Maven 报错 Non-resolvable parent POM ... was cached in the local repository, resolution will not be
  5. 退出登录后点返回键 是登录状态_看了这50条登录的测试点,你还敢说测试很容易吗...
  6. 闪光css,css实现图片闪光效果
  7. Spring tool suite修改主题
  8. jar 加入本地maven仓库
  9. html盒子背景图,CSS盒子模型以及背景图
  10. C#习题之标准体重测试
  11. 红帽linux5.4安装教程,红帽企业Linux5.4下ORACLE安装步骤(推荐).pdf
  12. Windows10 安装程序无法继续,因为你的计算机上安装了更新的Internet Explore版本
  13. 拥塞控制算法(Congestion Control)对比
  14. 【线性代数】第一章 1.3逆矩阵
  15. 木纹标识lisp_lisp:关于标识符:原子和列表初步
  16. opencv学习(0)小知识点汇总
  17. 利用excel表格将IP(IPV4)地址自动按段拆分每一段的数值至单元格
  18. Versal ACAP AI 引擎入门
  19. 如人饮水,冷暖自知。
  20. 2019微生物组——16S扩增子分析专题培训第四期

热门文章

  1. 前端开发示范(H5+CS3)
  2. 考研数学二知识点总结整理
  3. 用了小郑导师的这套模板,我的毕设有着落了~
  4. 初学JAVA之简单模拟拳皇
  5. stata手动绘制logistic回归预测模型校准曲线(Calibration curve)校准曲线(1)
  6. 百世快递快速的查询并导出csv表格?
  7. 信封问题(dp题)c++
  8. vue下载依赖dos命令_Windows是否仍然依赖MS-DOS?
  9. 选车真不是一件容易的事
  10. 系统学习NLP(十)--词性标注算法综述