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入门(一)的更多相关文章

  1. 4 weekend110的hive入门

    查看企业公认的最新稳定版本:       https://archive.apache.org/dist/  Hive和HBase都很重要,当然啦,各自也有自己的替代品. 在公司里,SQL有局限,大部 ...

  2. hadoop笔记之Hive入门(Hive的体系结构)

    Hive入门(二) Hive入门(二) Hive的体系结构 ○ Hive的元数据 Hive将元数据存储在数据库中(metastore),支持mysql.derby.oracle等数据库,Hive默认是 ...

  3. hadoop笔记之Hive入门(什么是Hive)

    Hive入门(一) Hive入门(一) 什么是Hive? Hive是个数据仓库,数据仓库就是数据库,但又与一般意义上的数据库有点区别 实际上,Hive是构建在hadoop HDFS上的一个数据仓库. ...

  4. Hive入门学习随笔(一)

    Hive入门学习随笔(一) ===什么是Hive? 它可以来保存我们的数据,Hive的数据仓库与传统意义上的数据仓库还有区别. Hive跟传统方式是不一样的,Hive是建立在Hadoop HDFS基础 ...

  5. 第1章 Hive入门

    第1章 Hive入门 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提 ...

  6. hive入门(一)、什么是hive

    1.Hive 基本概念 Hive是基于Hadoop的一个 数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能: Hive是构建在Hadoop 之上的数据仓库: 使用HQL作为查询 ...

  7. Hive入门学习--HIve简介

    现在想要应聘大数据分析或者数据挖掘岗位,很多都需要会使用Hive,Mapreduce,Hadoop等这些大数据分析技术.为了充实自己就先从简单的Hive开始吧.接下来的几篇文章是记录我如何入门学习Hi ...

  8. Hive Tutorial(上)(Hive 入门指导)

    用户指导 Hive 指导 Hive指导 概念 Hive是什么 Hive不是什么 获得和开始 数据单元 类型系统 内置操作符和方法 语言性能 用法和例子(在<下>里面) 概念 Hive是什么 ...

  9. 《OD大数据实战》Hive入门实例

    官方参考文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual 一.命令行和客户端 1. 命令窗口 1)进入命令窗口 hi ...

  10. Hive入门之UDFS函数

    一.UDFS函数介绍 1. 基本UDF (1)SHOWFUNCTIONS:这个用来熟悉未知函数. DESCRIBE FUNCTION<function_name>; (2)A IS NUL ...

随机推荐

  1. mac 安装使用Liteide

    1.下载go 官网下载地址(需要FQ)golang 中国镜像网站下载golangtc 下载go1.5.1.darwin-amd64.tar.gz包,解压得到一个Go目录,把go目录移动到你想要的路径下 ...

  2. WPF 调用资源图片

    原文:WPF 调用资源图片 最近做的wpf项目中,在开发的时候,把图片放到了bin下面,采用了imagePath =System.IO.Directory.GetCurrentDirectory()+ ...

  3. Symbol not found: _lua_objlen

    lua: error loading module 'cjson' from file '/usr/local/lib/lua/5.3/cjson.so': dlopen(/usr/local/lib ...

  4. nuget包发布

    创建项目 需要选择.net Standard的项目   0 设置包信息   1 打包   2 在bin目录下可以看到生成的.nupkg文件   3 发布包 登录https://www.nuget.or ...

  5. SQL之Grant(分配权限)和Revoke(回收权限)

    Grant Grant可以把指定的权限分配给特定的用户,如果这个用户不存在,则会创建一个用户 命令格式 grant 权限 on 数据库名.表名 to 用户名@登陆方式 identified by 'p ...

  6. Converter

    public class ImgPathConvert : IValueConverter { public object Convert(object value, Type targetType, ...

  7. WPF 数据模板DataType属性的使用,不用指定ItemTemplate

    <Window x:Class="CollectionBinding.MainWindow"        xmlns="http://schemas.micros ...

  8. WPF媒体资源和图片资源寻址方式的杂谈

    WPF提供一个封装和存取资源(resource)的机制,我们可将资源建立在应用程序的不同范围上.WPF中,资源定义的位置决定了该资源的可用范围.资源可以定义在如下范围中: (1)控件级:此时,资源只能 ...

  9. OPENGL---Ps 径向模糊算法(glsl)

    原文:OPENGL---Ps 径向模糊算法(glsl) 本文转载自:  http://blog.csdn.net/zx6733090/article/details/40311689 功能本人之前也介 ...

  10. huawei 通过BGP的团体属性进行路由控制

    网络拓扑 XRV1的配置: =========================================================================== # sysname ...