转载自:http://slaytanic.blog.51cto.com/2057708/782175

Hive 是facebook开源的一个基于hadoop框架的查询工具,也就是说,需要用hive的话,就要先安装hadoop。假设你已经有了hive。

 
1.字段的数据类型。
hive实际上为了数据挖掘的需要,对hive表的字段设置了数据类型,对于经常where的,还可以设置index。
 
数据类型分以下几种
 
STRING 不定长字符串
TINYINT 3位长整型数
SMALLINT 5位长整型
INT 10位整型
BIGINT 19位整型
FLOAT 浮点数
DOUBLE 双精度
BOOLEAN 布尔型,也就是TRUE和FALSE

不同的整型数有不同的位数限制,这个创建表的时候需要注意一下,别因为位数不够造成数据截取。位数过大,又会造成元数据的空间浪费。

还有三种不常用到的
STRUCTS 结构体
ARRAY 数组
MAP 这个不知道该怎么翻译合适

 
2.创建数据表。
 
hive的数据表分为两种,内部表和外部表。
 
内部表指hive创建并通过load data inpath进数据库的表,这种表可以理解为数据和表结构都保存在一起的数据表。当你通过DROP TABLE table_name 删除元数据中表结构的同时,表中的数据也同样会从hdfs中被删除。
 

部表指在表结构创建以前,数据已经保存在hdfs中了,通过创建表结构,将数据格式化到表的结构里。当DROP TABLE table_name
的时候,hive仅仅会删除元数据的表结构,而不会删除hdfs上的文件,所以,相比内部表,外部表可以更放心大胆的使用。
 
内部表建表语句:
CREATE TABLE database.table1
(
column1 STRING COMMENT 'comment1',
column2 INT COMMENT 'comment2'
);
外部表创建语句:
 
下面是hdfs中文件不用LZO压缩,纯文本保存时,如何创建外部表:
CREATE EXTERNAL TABLE IF NOT EXISTS database.table1
(
column1 STRING COMMENT 'comment1',
column2 STRING COMMENT 'comment2'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
LOCATION 'hdfs:///data/dw/asf/20120201';
 
下面是,当hdfs中的文件用LZO压缩后,如何创建外部表,当然你需要hadoop-gpl的支持才能以文本形式读取lzo文件。
CREATE EXTERNAL TABLE IF NOT EXISTS database.table1
(
column1 STRING COMMENT 'comment1',
column2 STRING COMMENT 'comment2'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
STORED AS
INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"
OUTPUTFORMAT
"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"
LOCATION 'hdfs:///data/dw/asf/20120201';

标红部分是十分操蛋的,网上几乎所有涉及该单词的文章基本全是复制粘贴抄的,无一例外,全部写成SORTED,如果你找的hive中文资料不是我这篇,恐怕创建外部表都会报错。

 
3.删除数据表
 
正如我们前面所说,数据表在删除的时候,内部表会连数据一起删除,而外部表只删除表结构,数据还是保留的。这个需要注意一下。
 
4.修改表结构
 
新添加字段
ALTER TABLE table1 ADD COLUMNS
(
column1 string COMMENT 'comment1',
column2 string COMMENT 'comment2'
);
修改表名
ALTER TABLE database.table1 RENAME TO database.table2;
修改数据表,以使用LZO压缩数据。
ALTER TABLE table1
SET FILEFORMAT
INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"
OUTPUTFORMAT
"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat";

用这句话,即便原来是文本数据改成了lzo压缩,也可以在不重新创建表的情况下重新使用了。

 
5.内部表加载数据
 
从本地文件系统中加载数据。
LOAD DATA LOCAL INPATH "/opt/data/1.txt" INTO TABLE table1;

意思是,从本地文件系统/opt/data/1.txt加载到hive的table1中。这时hive会读取该文件,并将内容写到hdfs中table1所在的位置。

 
从HDFS中加载数据
LOAD DATA INPATH "/data/datawash/1.txt" INTO TABLE table1;

意思是从HDFS的/data/datawash/1.txt写入到table1所在目录。

 
关于加载中的OVERWRITE是这样。
LOAD DATA LOCAL INPATH "/opt/data/1.txt" OVERWRITE INTO TABLE table1;

如果加了OVERWRITE,则覆盖原先已经存在的数据,如果你确定原先没有数据,则可以写上。

 
HIVE还包含很多功能,View,index,自定义函数等,这个慢慢再说吧。

hadoop SQL使用的更多相关文章

  1. [Hadoop in Action] 第1章 Hadoop简介

    编写可扩展.分布式的数据密集型程序和基础知识 理解Hadoop和MapReduce 编写和运行一个基本的MapReduce程序   1.什么是Hadoop   Hadoop是一个开源的框架,可编写和运 ...

  2. Hive SQL 监控系统 - Hive Falcon

    1.概述 在开发工作当中,提交 Hadoop 任务,任务的运行详情,这是我们所关心的,当业务并不复杂的时候,我们可以使用 Hadoop 提供的命令工具去管理 YARN 中的任务.在编写 Hive SQ ...

  3. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)

    CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...

  4. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作

    http://www.cnblogs.com/wgp13x/p/4934521.html 内容一样,样式好的版本. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据 ...

  5. 别老扯什么Hadoop了,你的数据根本不够大

    本文原名“Don't use Hadoop when your data isn't that big ”,出自有着多年从业经验的数据科学家Chris Stucchio,纽约大学柯朗研究所博士后,搞过 ...

  6. 你的数据根本不够大,别老扯什么Hadoop了

    本文原名"Don't use Hadoop when your data isn't that big ",出自有着多年从业经验的数据科学家Chris Stucchio,纽约大学柯 ...

  7. 3 分钟的高速体验 Apache Spark SQL

    "War of the Hadoop SQL engines. And the winner is -?" 这是一个非常好的问题.只要.无论答案是什么.我们都值花一点时间找出 Sp ...

  8. Awesome Hadoop

    A curated list of amazingly awesome Hadoop and Hadoop ecosystem resources. Inspired by Awesome PHP,  ...

  9. PayPal高级工程总监:读完这100篇论文 就能成大数据高手(附论文下载)

    100 open source Big Data architecture papers for data professionals. 读完这100篇论文 就能成大数据高手 作者 白宁超 2016年 ...

随机推荐

  1. Qt源码分析之信号和槽机制

    Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的说法,简单点说就是如何在一个类的一个 ...

  2. 输出宽字符数组 C++

    std::cout << "ASCII and ANSI" << std::endl;std::wcout << L"INSERT M ...

  3. BZOJ 3153 Sone1

    题解:水水哒AAA树啦 #include<iostream> #include<cstdio> #include<cmath> #include<algori ...

  4. bzoj1965 [Ahoi2005]SHUFFLE 洗牌

    Description 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联 ...

  5. 【转】编写Chrome扩展程序

    Chrome的扩展程序很多,也很容易入门,可以来简单实现一下 看看,慢慢就能实现出一个扩展程序来 每个扩展程序应用一般会包含: 一个manifest清单文件 html文件 js文件 其他文件等 可以看 ...

  6. openstack 安装

  7. 重写boost内存池

    最近在写游戏服务器网络模块的时候,需要用到内存池.大量玩家通过tcp连接到服务器,通过大量的消息包与服务器进行交互.因此要给每个tcp分配收发两块缓冲区.那么这缓冲区多大呢?通常游戏操作的消息包都很小 ...

  8. wpf在异步中给前台赋值

    wpf,新建异步方法: Thread newThread = new Thread(new ParameterizedThreadStart(GetResult)); newThread.Start( ...

  9. DB2完美卸载

    会安装,也要会卸载.详细的安装说明不多,我这个我觉得写得还算全.  准备工作.      1.用 ps -ef|grep db2 找出db2安装目录      2. ./db2level 查出DB2的 ...

  10. dialog中的button动态设置为disable[转]

    我们再写dialog的时候,会时常有这样一种需求,希望通过某些条件将dialog的button设置为disable的. 基本的命令就是将“确定”这个button设置为disable(false). 如 ...