From 85390c093d59cad21a473f40dc69439ab2405f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Tue, 23 Apr 2019 17:51:52 +0800 Subject: [PATCH] =?UTF-8?q?hive=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=92=8C=E6=96=87=E4=BB=B6=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 ++ notes/Hive数据类型和文件格式.md | 94 +++++++++++++++++++ notes/Storm三种打包方式对比分析.md | 5 + pictures/hive-data-type.png | Bin 0 -> 9682 bytes 4 files changed, 106 insertions(+) create mode 100644 notes/Hive数据类型和文件格式.md create mode 100644 pictures/hive-data-type.png diff --git a/README.md b/README.md index 468e780..2b14c53 100644 --- a/README.md +++ b/README.md @@ -54,11 +54,18 @@ 3. [集群资源管理器——YARN](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Hadoop-YARN.md) 4. [Hadoop单机伪集群环境搭建](https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/hadoop%E5%8D%95%E6%9C%BA%E7%89%88%E6%9C%AC%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.md) 5. [HDFS常用Shell命令](https://github.com/heibaiying/BigData-Notes/blob/master/notes/HDFS常用Shell命令.md) +6. HDFS Java API详解 ## 二、Hive 1. [数据仓库Hive](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Hive.md) 2. [Linux环境下Hive的安装部署](https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/Linux%E7%8E%AF%E5%A2%83%E4%B8%8BHive%E7%9A%84%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2.md) +3. Hive shell基本使用 +4. Hive 数据类型和文件格式 +5. Hive 常用 DDL操作 +6. Hive 数据查询 +7. Hive 视图和索引 +8. Hive 模式设计 ## 三、Spark diff --git a/notes/Hive数据类型和文件格式.md b/notes/Hive数据类型和文件格式.md new file mode 100644 index 0000000..2dc7272 --- /dev/null +++ b/notes/Hive数据类型和文件格式.md @@ -0,0 +1,94 @@ +# Hive数据类型和文件格式 + + + + +## 一、数据类型 + +### 1.1 基本数据类型 + +Hive表中的列支持以下基本数据类型: + +- **Integers(整型)** + - TINYINT—1字节的有符号整数 + - SMALLINT—2字节的有符号整数 + - INT—4字节的有符号整数 + - BIGINT—8字节的有符号整数 +- **Boolean(布尔型)** + - BOOLEAN—TRUE/FALSE +- **Floating point numbers(浮点型)** + - FLOAT— 单精度浮点型 + - DOUBLE—双精度浮点型 +- **Fixed point numbers(定点数)** + - DECIMAL—用户自定义精度定点数,比如2.4,3.68 +- **String types(字符串)** + - STRING—指定字符集的字符序列 + - VARCHAR—具有最大长度限制的字符序列 + - CHAR—固定长度的字符序列 +- **Date and time types(日期时间类型)** + - TIMESTAMP — 时间戳 + - TIMESTAMP WITH LOCAL TIME ZONE — 时间戳,纳秒精度 + - DATE—日期类型 +- **Binary types(二进制类型)** + - BINARY—字节序列 + +>TIMESTAMP 和 TIMESTAMP WITH LOCAL TIME ZONE 的区别: +> +>TIMESTAMP WITH LOCAL TIME ZONE:用户提交时间给数据库时,该类型会转换成数据库的时区来保存。查询时则按照查询客户端的不同,转换为查询客户端所在的时区的时间。 +> +>TIMESTAMP :提交什么时间就保存什么时间,查询时也不做任何转换。 + +### 1.2 隐式转换 + +Hive中基本数据类型遵循以下的层次结构,按照这个层次结构,子类型到祖先类型允许隐式转换。例如INT类型的数据允许隐式转换为BIGINT类型。额外注意的是:按照类型层次结构允许将STRING类型隐式转换为DOUBLE类型。 + +
+ + + +### 1.3 复杂类型 + +| 类型 | 描述 | 示例 | +| ------ | ------------------------------------------------------------ | -------------------------------------- | +| STRUCT | 类似于对象,是字段的集合,字段的类型可以不同,可以使用 `名称.字段名`方式进行访问 | STRUCT ('xiaoming', 12 , '2018-12-12') | +| MAP | 键值对的集合,可以使用`名称[key]`的方式访问对应的值 | map('a', 1, 'b', 2) | +| ARRAY | 数组是一组具有相同类型和名称的变量的集合,可以使用`名称[index]`访问对应的值 | ARRAY('a', 'b', 'c', 'd') | + + + +### 1.4 示例 + +如下给出一个基本数据类型和复杂数据类型的使用示例: + +```sql +CREATE TABLE students( + name STRING, -- 姓名 + age INT, -- 年龄 + subject ARRAY, --学科 + score MAP, --各个学科考试成绩 + address STRUCT --家庭居住地址 +) ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"; +``` + + + +## 二、文件格式 + +当数据存储在文本文件中,必须按照一定格式区别行和列,比如使用逗号作为分隔符的CSV文件(Comma-Separated Values)或者使用制表符作为分隔值的TSV文件(Tab-Separated Values)。但是使用这些字符作为分隔符的时候存在一个缺点,就是正常的文件内容中也可能出现逗号或者制表符。 + +所以Hive默认使用了几个平时很少出现的字符,这些字符一般不会作为内容出现在文件中。Hive默认的行和列分隔符如下表所示。 + +| 分隔符 | 描述 | +| ----------- | ------------------------------------------------------------ | +| \n | 对于文本文件来说,每行是一条记录,所以可以使用换行符来分割记录 | +| ^A (Ctrl+A) | 分割字段(列),在CREATE TABLE语句中也可以使用八进制编码 `\001` 来表示 | +| ^B | 用于分割 ARRAY 或者 STRUCT 中的元素,或者用于 MAP 中键值对之间的分割,
在CREATE TABLE语句中也可以使用八进制编码`\002` 表示 | +| ^C | 用于 MAP 中键和值之间的分割,在CREATE TABLE语句中也可以使用八进制编码`\003` 表示 | + + + +## 三、存储格式 \ No newline at end of file diff --git a/notes/Storm三种打包方式对比分析.md b/notes/Storm三种打包方式对比分析.md index 3d2d4e1..a865371 100644 --- a/notes/Storm三种打包方式对比分析.md +++ b/notes/Storm三种打包方式对比分析.md @@ -328,3 +328,8 @@ jar:file:/usr/appjar/storm-hdfs-integration-1.0.jar!/defaults.yaml]
+ + +## 参考资料 + +关于maven-shade-plugin的更多配置可以参考: [maven-shade-plugin 入门指南](https://www.jianshu.com/p/7a0e20b30401) \ No newline at end of file diff --git a/pictures/hive-data-type.png b/pictures/hive-data-type.png new file mode 100644 index 0000000000000000000000000000000000000000..aa2db292d63cd3248db66fcf9f49ac9665fee16f GIT binary patch literal 9682 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 literal 0 HcmV?d00001