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. 【C++】拷贝构造函数和赋值符函数

    在C++中,调用拷贝构造函数有三种情况: 1.一个对象作为函数参数,以值传递的方式传入函数体. 2.一个对象作为函数返回值,以值传递的方式从函数返回. 3.一个对象用于给另外一个对象进行初始化(复制初 ...

  2. Linux内核list/hlist解读

    转自:http://blog.chinaunix.net/uid-20671208-id-3763131.html 目录 1. 前言 2 2. 通用宏 2 2.1. typeof 2 2.1.1. 定 ...

  3. pio 背景色

    This example shows you Excel cell fills and colors using Apache POI. In our example i have used all ...

  4. 沿着path路径做动画

    沿着path路径做动画 路径 效果 源码 // // ViewController.m // PathAnimation // // Created by YouXianMing on 16/1/26 ...

  5. TrafficStats——流量统计类的范例,获取实时网速

    2.3开始android就提供来这个类的API,这样我们就可以方便的用他来实现统计手机流量来.这个类其实也很简单,我贴上他的几个方法,大家一看就知道怎么用了. static long getMobil ...

  6. Spring Boot中application.yml与bootstrap.yml的区别(转载)

    说明:其实yml和properties文件是一样的原理,主要是说明application和bootstrap的加载顺序.且一个项目上要么yml或者properties,二选一的存在. Bootstra ...

  7. Orchard模块开发全接触3:分类的实现及内容呈现(Display)

    一:分类用现有技术怎么实现? 实际就是创建 Query 和 Projection,如果不知道怎么做,参考:Orchard之在前台显式一个属于自己的列表(在这篇里,还进行了稍稍拓展),当然,基础的知道, ...

  8. information_schema系列十

    information_schema系列十   1:INNODB_FT_CONFIG 这张表存的是全文索引的信息,查询前可以先通过以下语句查询一下开启全文索引的表: show variables li ...

  9. junit5了解一下

    要求java8及以上版本 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage https://junit.org/junit5/docs/ ...

  10. Django查询 – id vs pk

    当编写django查询时,可以使用id / pk作为查询参数. Object.objects.get(id=1) Object.objects.get(pk=1) pk代表主键(primary key ...