Hive是Hadoop的常用工具之一,Hive查询语言(HiveQL)的语法和SQL类似,基本实现了SQL-92标准。

1. 表的建立

编写以下的文件:

USE test;
DROP TABLE IF EXISTS student2;
CREATE TABLE student2(
id INT,
name STRING,
age INT,
course ARRAY<STRING>,
body MAP<STRING,FLOAT>,
address STRUCT<street:STRING,number:INT>
)
PARTITIONED BY (state STRING,city STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

保存为test.hql,该文件指定了表的结构和分隔符。Hive的数据类型除了INT、STRING、FLOAT等基本类型以外,还有三种复杂数据类型:STRUCT、MAP和ARRAY。PARTITIONED BY()指定了表的分区字段,分区字段只能出现一次,否则会出错。ROW FORMAT DELIMITED指定了各种分隔符。最后指定了文件存储格式为TEXTFILE。

在Linux终端里输入如下命令:

hive -f test.hql

该命令执行了test.hql文件,创建了表student2(前提是test数据库已经被创建)。可以进入hive,输入

desc student2;

命令查看该表的结构:

2. 从文件导入数据

在Linux中创建一个文本文件,保存为/home/hadoop/student2:

1    Tom    20    Chinese,Maths,English    Height:165,Weight:80    South Street,101    Sichuan    Chengdu
2 Mike 25 Chinese,Maths,English,Computer Science Height:175,Weight:70 North Street,105 Sichuan Chengdu
3 Peter 26 Java,Hadoop Height:168,Weight:68 East Street,12 Sichuan Chengdu

在Hive中输入以下命令将该文件里面的数据导入student2:

load data local inpath '/home/hadoop/student2' overwrite into table student2 partition(state='Sichuan', city='Chengdu');

overwrite表示将以前的数据覆盖,local表示是从本地文件导入,如果没有写local,则表示从HDFS文件导入。如果文本文件里面没有写最后面的Sichuan和Chengdu,导入数据时会自动把这两个字段分别设置为Sichuan和Chengdu,因为在partition中已经指定了Sichuan和Chengdu。

执行命令:

select * from student2;

可见数据已经被导入表student2:

3. 通过查询语句导入数据

新建一张表student3,结构和student3一致,然后输入命令:

from student2
insert overwrite table student3 partition(state='Sichuan', city='Chengdu') select id,name,age,course,body,address;

该命令将student2中的数据导入到student3。注意select后面不能写"*",否则会出错,只能写除了分区字段以外的其他字段。查看student3,可见数据已经被导入:

4. 数据的导出

输入命令:

insert overwrite local directory '/home/hadoop/hive1' select * from student2;

将数据导出到本地文件。先新建了一个hive1文件夹,然后将数据导入到hive1文件夹里面的000000_0文件。

Hive表的建立和导入导出数据的更多相关文章

  1. Oracle小技巧_不同表空间不同用户导入导出数据dmp

    [博主注:数据库方面 ITPUB网站及博客内容非常丰富]   转载来源ITPUB 博客 经常有人会问:原来的数据在USERS表空间里面,我想把它IMP进APP表空间,我已经修改了目的用户的默认表空间, ...

  2. 利用sqoop将hive数据导入导出数据到mysql

    一.导入导出数据库常用命令语句 1)列出mysql数据库中的所有数据库命令  #  sqoop list-databases --connect jdbc:mysql://localhost:3306 ...

  3. Mysql & Hive 导入导出数据

    ---王燕行转列sql select split(concat_ws(',',collect_set(cast(smzq as string))),',')[1] ,split(concat_ws(' ...

  4. hive导入导出数据案例

    查询数据: use ods;set /user.password=ODS-SH;select * from base_cdma_all limit 10; use tag_bonc;select * ...

  5. linux mysql 数据库操作导入导出 数据表导出导入

    linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...

  6. 常见SQL Server导入导出数据的几个工具

    摘自:http://www.cnblogs.com/chenxizhang/archive/2011/06/09/2076542.html 在我们的日常工作中,与数据库打交道的机会越来越多.这一篇文章 ...

  7. CRL快速开发框架系列教程九(导入/导出数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  8. Android开发笔记:SQLite导入导出数据

    SQLite是Android中最方便使用的数据库了,现在看下如何快速的在SQLite中导入导出数据. 首先由于是.NET项目转Android,原有数据库使用的是SQLSERVER,由于项目相同部分结构 ...

  9. PLSQL导入/导出数据方法

    PLSQL导入/导出数据方法 PLSQL导入/导出数据方法 以前导数据库信息的时候,总是会先开启sql窗口,把自己手写的建表文件复制进去,然后再导入数据信息. 今天突然懒得去找以前的建表文件,而想用S ...

随机推荐

  1. RDIFramework.NET V2.7 Web版本号升手风琴+树型文件夹(2级+)方法

    级+)"界面风格,以展示多级功能菜单,满足用户的要求.Web展示效果例如以下: 要以"手风琴+树型文件夹(2级+)"的风格来展示功能模块,我们须要在"系统配置& ...

  2. attrs.xml中declare-styleable 详解(用于自定义控件的属性)

    1. 框架定义: <declare-styleable name = "名称"> <attr name = "……" format = &qu ...

  3. Asp.Net Core发布绑定域名和端口

    一.WebHostBuilder配置URL和端口进行侦听 UseUrls() 1.默认的ASP.NET Core项目绑定http://localhost:5000.通过使用UseUrls扩展方法——编 ...

  4. 在windows2012上安装MSSQL 2008 Manage Studio 出现错误

    在windows2012上安装MSSQL 2008 Manage Studio 出现错误: 解决方法:重新建立一个管理员账户,用另外一个账户登陆,然后安装. 原因:未知 --------------- ...

  5. MySQL global Log

    mysql> show variables like "%general_log%"; +------------------+----------------------- ...

  6. Java调用DLL有多种方式,常用的方式有JNative、JNA、JNI等。

    JNative方式调用dll JNative是一种能够使Java语言使调用DLL的一种技术,对JNI进行了封装,可能有些读者会有这样一个问题,JNative对JNI进行了封装,并且是一种跨语言的使用D ...

  7. 数据库savepoint

    保存点(savepoint)是事务过程中的一个逻辑点,我们可以把事务回退到这个点,而不必回退整个事务. 语法 编辑 savepoint savepoint_name 这个命令就是在事务语句之间创建一个 ...

  8. apache+jetty 配置web jsp服务器负载均衡

    首先,查找中文资料,貌似很少,有一个网友写了点,但是1版本过老,2有些地方有错误. 经过我自己摸索,记录一下.这个图很简洁明了 第一阶段 ,配置jetty 首先从 http://download.ec ...

  9. LeetCode295-Find Median from Data Stream && 480. 滑动窗口中位数

    中位数是有序列表中间的数.如果列表长度是偶数,中位数则是中间两个数的平均值. 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / 2 = 2.5 设计一个支持以下两种操 ...

  10. 用GibbsLDA做Topic Modeling

    http://weblab.com.cityu.edu.hk/blog/luheng/2011/06/24/%E7%94%A8gibbslda%E5%81%9Atopic-modeling/#comm ...