下面是本课程概览:

(1)hive系列之简介,安装,beeline和hiveserver2

(2)hive系列之基本操作

(3)hive系列之udf

(4)hive系列之二级分区和动态分区

(5)hive系列之分桶表

(6)hive系列之常用函数

(7)hive系列之系统讲解开窗函数

(8)hive系列之存储格式及常用压缩格式

(9)hive系列之数据仓库建模理论

(10)hive系列之数据仓库建模-维度表和事实表

(11)hive系列之数据仓库建模-退化维度和缓慢变化维

(12)hive系列之常用企业性能优化1

(13)hive系列之常用企业性能优化2

(14)hive系列之常用企业性能优化3

今天是第二讲,Hive 的基本操作

今天的内容比较多,也比较枯燥,尽可能对着操作一遍,加深认识

01

数据库相关

1.创建数据库

create database db_hive;

create database if not exists db_hive;

2.创建数据库到指定目录下

create database if not exists db_hive_03 location '/user/wangkai/hive/warehouse/db_hive03.db';

3.显示当前所有的数据库

show databases;

4.查看数据库描述

desc database db_hive;

5.删除数据库就不说了,很危险

02

数据类型

1、基本类型

这里着重说一下 TIMESTAMP

TIMESTAMP 类型的主要作用是在数据比较的效率上比较高

TIMESTAMP 类型 ,其对应的格式为:yyyy-MM-dd HH:MM:SS,从文件中导入时,必须满足这个格式的才能导入,否则显示为null

比如现在建一个表

create table dw.t_date (

t1 date,

t2 timestamp

)

comment '日期测试表'

row format delimited

fields terminated by ',';

创建文件提交到 hdfs 上

文件内容:

2019-09-01,2019-09-01 11:12:00

2019-08-01,2019-09-01 12:00

加载到表中

LOAD DATA INPATH '/tmp/datetest/date.txt' into TABLE dw.t_date;

最终t2不满足格式,所以显示了null

Hive 中比较常用的时间相关的udf :

unix_timestamp() 返回当前的时间戳

unix_timestamp('2019-09-01 11:10:10') 返回指定日期的时间戳

from_unixtime(1567307471) 返回 yyyy-MM-dd HH:MM:SS 格式的字符串

2、复杂类型

ARRAY、Map、struct、union,这些复杂类型是由基础类型构成的

(1) Array

表示数组,是具有相同类型的变量的集合,这些变量称为数组的元素,每个元素都有下标,从0开始

如下,我们建一张 person 表,名字、工作地点、爱好

create table dw.person(

name string,

work_locations array<string>,

other_info map<string,string>,

other_info2 struct<one:string,two:int>

)

row format delimited

fields terminated by ','

collection items terminated by '|'

map keys terminated by ':';

字段的分隔符是 ,

集合(数组和map)元素的分隔符是 |

map或者struct 的 键值对分隔符是 :

测试数据如下:

导入到表中

查询第一个工作地点:

select name,work_locations[0] from dw.person;

(2) Map

是一组键值对元组集合,使用数组表示法,map['first'] 可以获取值

比如上面的表中,查询性别

select name,other_info['sex'] from dw.person;

(3)Struct

是不同类型元素的集合,可以用 点 描述符来取元素

select name,other_info2.one from dw.person;

03

内部表、外部表、分区表

1、内部表和外部表的区别

(1)未被 external 修饰的是内部表,被 external 关键字修饰的是外部表

(2)内部表由 Hive 自身管理,外部表由 HDFS 管理(也就是数据在别的目录下,但元数据还是由 Hive 管理的)

(3)内部表数据的存储位置是:hive.metastore.warehouse.dir(默认是:/user/hive/warehouse),外部表数据的存储位置由自己制定

(4)删除内部表会直接删除元数据和存储在表下面的数据,而删除外部表只会删除元数据,HDFS 上的数据并不会被删除

2、分区表

为了对表进行合理的管理,以及提高查询的效率,Hive 可以将表组织成分区,一个分区实际上就是一个目录,一个表可以在多个维度上创建分区,分区之间的关系,就是目录树的关系。

就是在系统上创建文件夹,把分类数据放在不同的文件夹下,加快查询速度。

比如创建日期和公司两个分区,那么就可以指定查询某个月某个公司的数据,而不同全表扫描

3、实战

(1)内部表

上面建的dw.person 就是内部表,hive 会在 hdfs 文件上创建一个目录,删除表的时候,目录下的数据也会被删除

(2)外部表

使用关键字 external

create external table dw.t_test2 (

c1 string,

c2 string

)

如果没有指定位置,hive 会生成一个目录,如果指定了位置,那么不会创建目录

create external table dw.t_test3 (

c1 string,

c2 string

)

location '/tmp/person';

删除表,并不会删除 hdfs 文件的

(3)分区表

create table dw.t_test4 (

c1 string,

c2 string

)

partitioned by (appId string)

新增分区

alter table dw.t_test4 add partition(appId='app');

会在hdfs上新增一个目录

(4)外部分区表

顾名思义,即是外部表,又是分区表

create external table dw.t_test5 (

c1 string,

c2 string

)

partitioned by (appId string);

给外部分区表添加记录

alter table dw.t_test4 add partition(appId='app') location '/tmp/test1';

04

其他建表方式

1.用查询出来的数据建表

create table IF NOT EXISTS dw.log_20170629_2

AS select ip,user from dw.log_20170629;

2.仅仅创建已有表的表结构

create table IF NOT EXISTS dw.log_20170630

like dw.log_20170629;

05

加载和导出数据

1.加载数据

(1)这个命令是从本地拷贝文件到集群上,如果文件存在,则会重命名新增一份文件

load data local inpath '/opt/datas/student.txt' into table dw.student;

(2)加载数据并覆盖原有数据,会删除原有文件,再拷贝

load data local inpath '/opt/datas/student.txt' overwrite into table dw.student;

(3)加载数据到分区表

load data local inpath '/home/hadoop/data/emp.txt' into table dw.emp_partition partition (month='201509');

(4)加载hdfs数据,从hdfs移动数据到集群上

load data inpath '/opt/datas/student.txt' into table dw.student;

2.导出数据

(1)导出文件到本地目录

insert overwrite local directory '/home/hadoop/data/hive_exp_emp2'

ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'

select * from default.emp;

(2)hive命令

bin/hive -e "select * from default.emp;" > /opt/datas/exp_res.txt

(3)导出到hdfs中

insert overwrite directory '/user/wangkai/hive/hive_exp_emp'

ROW FORMAT DELIMITED FIELDS TERMINATED BY 't' COLLECTION ITEMS TERMINATED BY 'n'

下一篇是 hive 的 udf ,持续关注 kk大数据 噢

hive 导出json格式 文件_Hive 系列 之 基本操作合集相关推荐

  1. hive 导出json格式 文件_hive中创建hive-json格式的表及查询

    在hive中对于json的数据格式,可以使用get_json_object或json_tuple先解析然后查询. 也可以直接在hive中创建json格式的表结构,这样就可以直接查询,实战如下(hive ...

  2. hive 导出json格式 文件_hive支持json格式的数据

    Hive 支持完全 json 格式的数据  现有 json 格式的数据 test.txt ,如下 {"name":"zhang","age" ...

  3. hive 导出json格式 文件_hive存储json格式文件

    hive从0.12版本以后就开始自身支持json文件的格式了 1.文件格式 下面是测试用的文件预览格式,我将其存储为jsonTest.json文件,放在了/root目录下 {"_locati ...

  4. hive 导出json格式 文件_Magicodes.IE在.NET Core中通过请求头导出多种格式文件

    前言 在2.2里程碑中我们增加了一些新的功能,正如标题所写通过请求头进行导出我们不同格式的文件.下面我们来看一下如何使用.通过这种方式无论是对我们的数据多用途,还是说对我们的数据校验都做到了轻松易配. ...

  5. java 如何导出json文件_java导出json格式文件的示例代码

    本文介绍了java导出json格式文件的示例代码,分享给大家,具体如下: import java.io.File; import java.io.FileWriter; import java.io. ...

  6. js导出JSON格式文件

    在src目录下新建tools文件价,在tools文件中新建index.js(文件内名字随意) 在index.js文件中 const Tools = {// 导出文件exportJson(name, d ...

  7. bootstrap table export插件导出pdf格式文件中文乱码问题解决办法

    bootstrap table export插件导出pdf格式文件中文乱码的问题折腾了我整整两天,网上到处都是改源码,自己设置字体的方案,我都没搞定.结果今天看到官方文档(地址:GitHub - hh ...

  8. java 导出csv 格式,java导出csv格式文件的方法

    这篇文章主要为大家详细介绍了java导出csv格式文件的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 导出csv格式文件的本质是导出以逗号为分隔的文本数据 imp ...

  9. 【Java】生成 .json格式文件工具类

    package com.glodon.kgb.utils.json;import java.io.File; import java.io.FileOutputStream; import java. ...

最新文章

  1. 用python编程代码画图形_python编程:如何使用python代码绘制出哪些常见的机器学习图像?...
  2. android拨打电话
  3. 编写ShellCode
  4. H5+Mui文件配置 vue-resource基本使用方法
  5. 不要惊奇这种观点400电话
  6. 计算仰角_41页最新全站仪测量方法及计算+图文解说,助你轻松掌握测量
  7. 【数据结构和算法】拓扑排序(附leetcode题 207/210 课程表)
  8. HTTP报文格式详解
  9. 2020年工信部可备案的域名后缀大全
  10. 魔兽三区服务器物理位置,魔兽三区服务器
  11. Raid控制器-megacli 命令简易使用介绍
  12. 嵌入式系统开发笔记16:CJ/T-188 冷热量表协议解析5
  13. Graph WaveNet:用于时空图建模的图神经网络结构
  14. 【无标题】(2019)NOC编程猫创新编程复赛小学组真题含参考
  15. 计算机组成原理ACC MQ,计算机组成原理讲案第一章.ppt
  16. 中层管理者应该做什么?
  17. Launcher的启动过程
  18. html 中 a 链接的 download 属性的神奇使用
  19. 如何根据系谱计算近交系数并保存
  20. php 微信开发回复消息

热门文章

  1. VS Code Git 日常操作
  2. 在 xfire中使用 GZip来 压缩 传输量
  3. SpringCloud Gateway 集成 oauth2 实现统一认证授权_03
  4. Centos7 安装docker-compose
  5. idea 提示接口注释信息
  6. javaScript PC端网页特效
  7. 08服务器许可证安装向导,08_安装部署GRID许可证服务器.pdf
  8. php找不到phpmyadmin,phpMyAdmin 安装配置方法和问题解决
  9. php中$stu_by,PHP基础案例二:计算学生年龄
  10. mysql 查看root_Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)