Hive入门(一)
1 Hive中的数据定义
1.1 存储与创建
Hive会为每个数据库创建一个目录。数据库中的表以子目录的形式存储。
有一个例外是default中的表,因为这个库本身没有目录。
数据库的顶级目录是hive.metastore.warehuse.dir所指定的目录。
假设用户使用的是默认配置/user/hive/warehuse,那么我们创建数据库test时,会对应创建一个目录/user/hive/warehuse/test.db(数据库目录是以.db结尾的)。
可以通过如下命令进行修改:
hive> CREATE DATABASE test LOCATION '/mylocation';
可以命令可以查看该数据库的描述:
hive> DESCRIBE DATABASE test;
1.2 创建表
hive创建表的语句遵从SQL语句习惯,但是hive有一些扩展:
hive> CREATE TABLE [IF NOT EXISTS] [db_name.]table_name
> [(col_name data_type [COMMENT col_comment], ...)] [
> COMMENT table_comment]
> [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
> [LOCATION hdfs_path]
1)PARTITIONED 表示的是分区,不同的分区会以文件夹的形式存在,在查询的时候指定分区查询将会大大加快查询的时间
2)LOCATION指的是在HDFS上存储的位置
当然这里列举的是常用的选项。
1.3 外部表与内部表
1)创建表时:创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变。
2)删除表时:在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。
2 Hive中的数据操作
2.1 Hive四种数据导入方式
1)从本地文件系统中导入数据到Hive表
先在Hive里面创建好表:
hive> create table lac
> (id int, name string,
> age int, tel string)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY '\t'
> STORED AS TEXTFILE;
本地文件系统里面有个/home/xinniu/lac.txt文件,内容如下:
1 wyp 25 13188888888888
2 test 30 13888888888888
3 zs 34 899314121
lac.txt文件中的数据列之间是使用\t分割的,可以通过下面的语句将这个文件里面的数据导入到lac表里面,操作如下:
hive> load data local inpath 'lac.txt' into table lac;
这样就将lac.txt里面的内容导入到wyp表里面去了,可以到lac表的数据目录下查看,如下命令
hive> dfs -ls /user/hive/warehouse/lac;
注意:
和我们熟悉的关系型数据库不一样,Hive现在还不支持在insert语句里面直接给出一组记录的文字形式,也就是说,Hive并不支持INSERT INTO …. VALUES形式的语句。
2)HDFS上导入数据到Hive表
假设有下面这个文件/home/xinniu/lac.txt,文件内容和上面一样,具体的操作如下:
bin/hadoop fs -cat /home/xinniu/lac.txt
3)从别的表中查询出相应的数据并导入到Hive表中
假设Hive中有test表,其建表语句如下所示
hive> create table test(
> id int, name string
> ,tel string)
> partitioned by
> (age int)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY '\t'
> STORED AS TEXTFILE;
下面语句就是将lac表中的查询结果并插入到test表中:
hive> insert into table test
> partition (age='')
> select id, name, tel
> from lac;
4)在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中
hive> create table test2
> as
> select id, name, tel
> from lac;
2.2 导出数据
1)导出到本地文件系统
hive> insert overwrite local directory '/home/xinniu/lac'
> select * from lac;
2)导出到HDFS中
hive> insert overwrite directory '/home/xinniu/hdfs'
> select * from lac;
注意,和导出文件到本地文件系统的HQL少一个local,数据的存放路径就不一样了。
3)导出到Hive的另一个表中
hive> insert into table test
> partition (age='')
> select id, name, tel
> from lac;
Hive入门(一)的更多相关文章
- 4 weekend110的hive入门
查看企业公认的最新稳定版本: https://archive.apache.org/dist/ Hive和HBase都很重要,当然啦,各自也有自己的替代品. 在公司里,SQL有局限,大部 ...
- hadoop笔记之Hive入门(Hive的体系结构)
Hive入门(二) Hive入门(二) Hive的体系结构 ○ Hive的元数据 Hive将元数据存储在数据库中(metastore),支持mysql.derby.oracle等数据库,Hive默认是 ...
- hadoop笔记之Hive入门(什么是Hive)
Hive入门(一) Hive入门(一) 什么是Hive? Hive是个数据仓库,数据仓库就是数据库,但又与一般意义上的数据库有点区别 实际上,Hive是构建在hadoop HDFS上的一个数据仓库. ...
- Hive入门学习随笔(一)
Hive入门学习随笔(一) ===什么是Hive? 它可以来保存我们的数据,Hive的数据仓库与传统意义上的数据仓库还有区别. Hive跟传统方式是不一样的,Hive是建立在Hadoop HDFS基础 ...
- 第1章 Hive入门
第1章 Hive入门 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提 ...
- hive入门(一)、什么是hive
1.Hive 基本概念 Hive是基于Hadoop的一个 数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能: Hive是构建在Hadoop 之上的数据仓库: 使用HQL作为查询 ...
- Hive入门学习--HIve简介
现在想要应聘大数据分析或者数据挖掘岗位,很多都需要会使用Hive,Mapreduce,Hadoop等这些大数据分析技术.为了充实自己就先从简单的Hive开始吧.接下来的几篇文章是记录我如何入门学习Hi ...
- Hive Tutorial(上)(Hive 入门指导)
用户指导 Hive 指导 Hive指导 概念 Hive是什么 Hive不是什么 获得和开始 数据单元 类型系统 内置操作符和方法 语言性能 用法和例子(在<下>里面) 概念 Hive是什么 ...
- 《OD大数据实战》Hive入门实例
官方参考文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual 一.命令行和客户端 1. 命令窗口 1)进入命令窗口 hi ...
- Hive入门之UDFS函数
一.UDFS函数介绍 1. 基本UDF (1)SHOWFUNCTIONS:这个用来熟悉未知函数. DESCRIBE FUNCTION<function_name>; (2)A IS NUL ...
随机推荐
- VS2015中的快捷键
1.回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键“Ctrl + -”; 2)前进到下一个光标位置:“Ctrl + Shift + - ”. 2.复制/剪切/删除整行代码 ...
- WPF x:static的使用
<Window x:Class="XamlTest.Window1" xmlns="http://schemas.microsoft.com/winf ...
- WPF Button控件模板
<Window x:Class="ControlTemplateDemo.MainWindow" xmlns="http://schemas.m ...
- WPF中的多进程(Threading)处理实例(一)
原文:WPF中的多进程(Threading)处理实例(一) 说明:希望通过揣摩这些案例,能进一步了解进程的工作原理. 1.方法一描述的是在同一窗口中,在计算素数的同时而不影响Canvas的工作. 方法 ...
- Generating Names and Classifying Names with Character-Level RNN
原文地址: Generating Names with Character-Level RNN 搬运只为督促自己学习,没有其他目的. Preparing the Data Download the ...
- IE的BHO通过IHTMLDocument2接口获得网页源代码
参考了凤之焚的专栏:http://blog.csdn.net/lion_wing/article/details/769742 但是他的源码有些问题,即IHTMLElementCollection接口 ...
- GRPC 1.3.4 发布,Google 高性能 RPC 框架(Java C++ Go)
GRPC 1.3.4 发布了,GRPC 是一个高性能.开源.通用的 RPC 框架,面向移动和 HTTP/2 设计,是由谷歌发布的首款基于 Protocol Buffers 的 RPC 框架. GRPC ...
- Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全
原文:Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全 前面简单学习了一些Android UI的一些基础知识,那么接下来我们一起来详细学习Android的 ...
- WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客
原文:WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客 using System; using System.Linq; using System.Web; using S ...
- 三种扩展 Office 软件功能的开发模型对比 – Office Add-In Model, VBA 和 VSTO
当 Office 用户需要针对文档自定义新功能时,可以求助于 VBA 或者 VSTO 两种方式.Office 2013 富客户端以后,微软为 Office 平台上的开发者提供了一种新模型 --- Of ...