码迷,mamicode.com
首页 > 数据库 > 详细

Hadoop Hive基础sql语法

时间:2015-03-18 10:12:13      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
1.DDL 操作
1.建表
2.3.创建简单表
4.创建外部表
5.建分区表
6.建Bucket表
7.创建表并创建索引字段ds
8.复制一个空表
9.显示所有表
10.按正条件正则表达式显示表
11.修改表结构
12.表添加一列 
13.添加一列并增加列字段注释
14.更改表名
15.删除列
16.增加删除分区
17.重命名表
18.修改列的名字类型位置注释
19.表添加一列 
20.添加一列并增加列字段注释
21.增加更新列
22.增加表的元数据信息
23.改变表文件格式与组织
24.创建删除视图
25.创建数据库
26.显示命令
2.DML 操作元数据存储
1.向数据表内加载文件
2.3.加载本地数据同时给定分区信息
4.OVERWRITE
5.将查询结果插入Hive表
6.将查询结果写入HDFS文件系统
7.INSERTINTO
3.DQL 操作数据查询SQL
1.1 基本的Select操作
2.例如
3.按先件查询
4.将查询数据输出至目录
5.将查询结果输出至本地目录
6.选择所有列到本地目录 
7.将一个表的统计结果插入另一个表中
8.将多表数据插入到同一表中
9.将文件流直接插入文件
10.2 基于Partition的查询
11.3 Join
4.从SQL到HiveQL应转变的习惯
1.Hive不支持等值连接
2.分号字符
3.IS NOT NULL
4.Hive不支持将数据插入现有的表或分区中
5.hive不支持INSERT INTO UPDATE DELETE操作
6.hive支持嵌入mapreduce程序来处理复杂的逻辑
7.hive支持将转换后的数据直接写入不同的表还能写入分区hdfs和本地目录
5.实际示例
1.创建一个表
2.加载数据到表中
3.统计数据总量
4.现在做一些复杂的数据分析
5.生成数据的周信息
6.使用映射脚本
7.将数据按周进行分割
8.处理Apache Weblog 数据
目录

  Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构

化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL 去查询分析需

要的内容,这套SQL 简称Hive SQL,使不熟悉mapreduce 的用户很方便的利用SQL 语言查询,汇总,分析数据。而mapreduce开发人员可以把

己写的mapper 和reducer 作为插件来支持Hive 做更复杂的数据分析。
     它与关系型数据库的SQL 略有不同,但支持了绝大多数的语句如DDL、DML 以及常见的聚合函数、连接查询、条件查询。HIVE不适合用于联机

online)事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。
    HIVE的特点:可伸缩(在Hadoop的集群上动态的添加设备),可扩展,容错,输入格式的松散耦合。

     Hive 的官方文档中对查询语言有了很详细的描述,请参考:http://wiki.apache.org/hadoop/Hive/LanguageManual ,本文的内容大部分翻译自该页面,期间加入了一些在使用过程中需要注意到的事项。

1.  DDL 操作

技术分享
•建表
•删除表
•修改表结构
•创建/删除视图
•创建数据库
•显示命令
DDL操作类型
技术分享
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 
  [(col_name data_type [COMMENT col_comment], ...)] 
  [COMMENT table_comment] 
  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] 
  [CLUSTERED BY (col_name, col_name, ...) 
  [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 
  [ROW FORMAT row_format] 
  [STORED AS file_format] 
  [LOCATION hdfs_path]
DDL-建表

•CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常

•EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)

•LIKE 允许用户复制现有的表结构,但是不复制数据

•COMMENT可以为表与字段增加描述

 

•ROW FORMAT

    DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char]

        [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]

   | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]

         用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive 通过 SerDe 确定表的具体的列的数据。

•STORED AS

            SEQUENCEFILE

            | TEXTFILE

            | RCFILE    

            | INPUTFORMAT input_format_classname OUTPUTFORMAT             output_format_classname

       如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCE 。

 

1.3 创建简单表:

hive> CREATE TABLE pokes (foo INT, bar STRING);

1.4 创建外部表:

技术分享
CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT,

     page_url STRING, referrer_url STRING,

     ip STRING COMMENT IP Address of the User,

     country STRING COMMENT country of origination)

 COMMENT This is the staging page view table

 ROW FORMAT DELIMITED FIELDS TERMINATED BY \054

 STORED AS TEXTFILE

 LOCATION <hdfs_location>;
创建外部表

1.5 建分区表

技术分享
CREATE TABLE par_table(viewTime INT, userid BIGINT,

     page_url STRING, referrer_url STRING,

     ip STRING COMMENT IP Address of the User)

 COMMENT This is the page view table

 PARTITIONED BY(date STRING, pos STRING)

ROW FORMAT DELIMITED ‘\t’

   FIELDS TERMINATED BY \n

STORED AS SEQUENCEFILE;
分区表

1.6 建Bucket

技术分享
CREATE TABLE par_table(viewTime INT, userid BIGINT,
     page_url STRING, referrer_url STRING,
     ip STRING COMMENT IP Address of the User)
 COMMENT This is the page view table
 PARTITIONED BY(date STRING, pos STRING)
 CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS
 ROW FORMAT DELIMITED ‘\t’
   FIELDS TERMINATED BY \n
STORED AS SEQUENCEFILE;
创建Bucket表

1.7 创建表并创建索引字段ds

hive> CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);

1.8 复制一个空表

CREATE TABLE empty_key_value_store

LIKE key_value_store;

例子

技术分享
create table  user_info (user_id int, cid string, ckid string, username string) 
row format delimited 
fields terminated by \t
lines terminated by \n;
例子

 

导入数据表的数据格式是:字段之间是tab键分割,行之间是断行。

及要我们的文件内容格式:

100636  100890  c5c86f4cddc15eb7        yyyvybtvt
100612  100865  97cc70d411c18b6f        gyvcycy
100078  100087  ecd6026a15ffddf5        qa000100

 

1.9 显示所有表:

hive> SHOW TABLES;

1.10 按正条件(正则表达式)显示表,

hive> SHOW TABLES ‘.*s‘;

Hadoop Hive基础sql语法

标签:

原文地址:http://www.cnblogs.com/HondaHsu/p/4346354.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!