Hive表的建立和导入导出数据
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表的建立和导入导出数据的更多相关文章
- Oracle小技巧_不同表空间不同用户导入导出数据dmp
[博主注:数据库方面 ITPUB网站及博客内容非常丰富] 转载来源ITPUB 博客 经常有人会问:原来的数据在USERS表空间里面,我想把它IMP进APP表空间,我已经修改了目的用户的默认表空间, ...
- 利用sqoop将hive数据导入导出数据到mysql
一.导入导出数据库常用命令语句 1)列出mysql数据库中的所有数据库命令 # sqoop list-databases --connect jdbc:mysql://localhost:3306 ...
- Mysql & Hive 导入导出数据
---王燕行转列sql select split(concat_ws(',',collect_set(cast(smzq as string))),',')[1] ,split(concat_ws(' ...
- hive导入导出数据案例
查询数据: use ods;set /user.password=ODS-SH;select * from base_cdma_all limit 10; use tag_bonc;select * ...
- linux mysql 数据库操作导入导出 数据表导出导入
linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...
- 常见SQL Server导入导出数据的几个工具
摘自:http://www.cnblogs.com/chenxizhang/archive/2011/06/09/2076542.html 在我们的日常工作中,与数据库打交道的机会越来越多.这一篇文章 ...
- CRL快速开发框架系列教程九(导入/导出数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- Android开发笔记:SQLite导入导出数据
SQLite是Android中最方便使用的数据库了,现在看下如何快速的在SQLite中导入导出数据. 首先由于是.NET项目转Android,原有数据库使用的是SQLSERVER,由于项目相同部分结构 ...
- PLSQL导入/导出数据方法
PLSQL导入/导出数据方法 PLSQL导入/导出数据方法 以前导数据库信息的时候,总是会先开启sql窗口,把自己手写的建表文件复制进去,然后再导入数据信息. 今天突然懒得去找以前的建表文件,而想用S ...
随机推荐
- 查看Oracle数据库名和实例名的命令
查看数据库名 SQL> select name from v$database; NAME --------- ORCL SQL> desc v$database; 名称 ...
- git 两个中心仓库上的分支 merge
首先在一个中心仓库里面添加另外一个仓库的所有分支. 命令: git remote add Cangku2 https://github.com/abc/abc.git git fetch 这之后在使用 ...
- USB OTG简单介绍、与普通USB线的差别
USB有三类接口A类接口 -----------最常见的扁平接口,四芯 VCC GND D+ D- B类接口 ...
- Android避免过度绘制之道
如果一个布局十分复杂,那么就需要来排查是否出现了过度绘制,如果出现了,那么很可能会造成刷新率下降,造成卡顿的现象.那么什么是过度绘制呢?过度绘制就是在同一个区域中叠加了多个控件.这就像小时候我们画画, ...
- Eclipse SDK Android Studio 下载地址
https://developer.android.com/sdk/index.html#download 这个网址可以下载需要的东西,FQ的话可以给 xifulinmen@gmail.com 发一个 ...
- [Web 前端] 如何构建React+Mobx+Superagent的完整框架
ReactJS并不像angular一样是一个完整的前端框架,严格的说它只是一个UI框架,负责UI页面的展示,如果用通用的框架MVC来说,ReactJs只负责View了,而Angular则是一个完整的前 ...
- [leetcode]Length of Last Word @ Python
原题地址:https://oj.leetcode.com/problems/length-of-last-word/ 题意: Given a string s consists of upper/lo ...
- 国外物联网平台(1):亚马逊AWS IoT
国外物联网平台(1)——亚马逊AWS IoT 马智 平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并 ...
- 创业公司做数据分析(四)ELK日志系统 (转)
http://blog.csdn.net/zwgdft/article/details/53842574 作为系列文章的第四篇,本文将重点探讨数据采集层中的ELK日志系统.日志,指的是后台服务中产生的 ...
- linux bash关闭标准输出1(exec 1<&-)后重新打开
linux bash shell的再次学习. 文件描述符: stdin,stdout 和 stderr 的文件描述符分别是 0,1 和 2(一个文件描述符说白了就是文件系统为了跟踪这个打开的文件而分配 ...