`
k_lb
  • 浏览: 834054 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

HIVE 基本语法

 
阅读更多

DDL Operations

创建表

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

创建表并创建索引字段ds

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

显示所有表

hive> SHOW TABLES;

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

hive> SHOW TABLES '.*s';

表添加一列

hive> ALTER TABLE pokes ADD COLUMNS (new_col INT);

添加一列并增加列字段注释

hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');

更改表名

hive> ALTER TABLE events RENAME TO 3koobecaf;

删除列

hive> DROP TABLE pokes;

元数据存储

将文件中的数据加载到表中

hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;

加载本地数据,同时给定分区信息

hive> LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');

加载DFS数据 ,同时给定分区信息

hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');

The above command will load data from an HDFS file/directory to the table. Note that loading data from HDFS will result in moving the file/directory. As a result, the operation is almost instantaneous.

SQL 操作

按先件查询

hive> SELECT a.foo FROM invites a WHERE a.ds='<DATE>';

将查询数据输出至目录

hive> INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT a.* FROM invites a WHERE a.ds='<DATE>';

将查询结果输出至本地目录

hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/local_out' SELECT a.* FROM pokes a;

选择所有列到本地目录

hive> INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a;

hive> INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a WHERE a.key < 100;

hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/reg_3' SELECT a.* FROM events a;

hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_4' select a.invites, a.pokes FROM profiles a;

hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_5' SELECT COUNT(1) FROM invites a WHERE a.ds='<DATE>';

hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_5' SELECT a.foo, a.bar FROM invites a;

hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/sum' SELECT SUM(a.pc) FROM pc1 a;

将一个表的统计结果插入另一个表中

hive> FROM invites a INSERT OVERWRITE TABLE events SELECT a.bar, count(1) WHERE a.foo > 0 GROUP BY a.bar;

hive> INSERT OVERWRITE TABLE events SELECT a.bar, count(1) FROM invites a WHERE a.foo > 0 GROUP BY a.bar;

JOIN

hive> FROM pokes t1 JOIN invites t2 ON (t1.bar = t2.bar) INSERT OVERWRITE TABLE events SELECT t1.bar, t1.foo, t2.foo;

将多表数据插入到同一表中

FROM src

INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100

INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200

INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200 and src.key < 300

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/dest4.out' SELECT src.value WHERE src.key >= 300;

将文件流直接插入文件

hive> FROM invites a INSERT OVERWRITE TABLE events SELECT TRANSFORM(a.foo, a.bar) AS (oof, rab) USING '/bin/cat' WHERE a.ds > '2008-08-09';

This streams the data in the map phase through the script /bin/cat (like hadoop streaming). Similarly - streaming can be used on the reduce side (please see the Hive Tutorial or examples)

实际示例

创建一个表

CREATE TABLE u_data (

userid INT,

movieid INT,

rating INT,

unixtime STRING)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

STORED AS TEXTFILE;

下载示例数据文件,并解压缩

wget http://www.grouplens.org/system/files/ml-data.tar__0.gz

tar xvzf ml-data.tar__0.gz

加载数据到表中

LOAD DATA LOCAL INPATH 'ml-data/u.data'

OVERWRITE INTO TABLE u_data;

统计数据总量

SELECT COUNT(1) FROM u_data;

现在做一些复杂的数据分析

创建一个 weekday_mapper.py: 文件,作为数据按周进行分割

import sys

import datetime

for line in sys.stdin:

line = line.strip()

userid, movieid, rating, unixtime = line.split('\t')

生成数据的周信息

weekday = datetime.datetime.fromtimestamp(float(unixtime)).isoweekday()

print '\t'.join([userid, movieid, rating, str(weekday)])

使用映射脚本

//创建表,按分割符分割行中的字段值

CREATE TABLE u_data_new (

userid INT,

movieid INT,

rating INT,

weekday INT)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t';

//将python文件加载到系统

add FILE weekday_mapper.py;

将数据按周进行分割

INSERT OVERWRITE TABLE u_data_new

SELECT

TRANSFORM (userid, movieid, rating, unixtime)

USING 'python weekday_mapper.py'

AS (userid, movieid, rating, weekday)

FROM u_data;

SELECT weekday, COUNT(1)

FROM u_data_new

GROUP BY weekday;

处理Apache Weblog 数据

将WEB日志先用正则表达式进行组合,再按需要的条件进行组合输入到表中

add jar ../build/contrib/hive_contrib.jar;

CREATE TABLE apachelog (

host STRING,

identity STRING,

user STRING,

time STRING,

request STRING,

status STRING,

size STRING,

referer STRING,

agent STRING)

ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'

WITH SERDEPROPERTIES (

"input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?",

"output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s"

)

STORED AS TEXTFILE;

分享到:
评论

相关推荐

    hive基础语法

    Hive作为一款基于Hadoop的数据仓库工具,为用户提供了一种类似SQL的查询语言——HiveQL,使得数据分析师能用熟悉的SQL语言去操作存储在Hadoop文件系统中的大数据。HiveQL支持绝大部分标准SQL语法,其中包括DDL(数据...

    Hive简介、Hive基础语法、Hive编程

    Hive简介,包括Hive的来源,系统的架构 Hive基础语法,包括 Hive各种函数 Hive编程,导入、导出、建表、分区、自定义函数

    Hive基本语法使用

    Hive是Apache Hadoop生态系统中的一个数据仓库工具,它允许用户使用...通过上述的Hive基本语法和使用,我们可以有效地管理和分析大规模数据。结合实际业务需求,合理运用Hive的特性,可以提高数据分析的效率和准确性。

    hive词法语法分析草稿0.3

    在Hive的源码分析中,第一章前言部分通常会概述分析的目的和背景,为后续章节提供基础。准备工作可能包括安装和配置ANTLR工具,理解Hive的基本概念和工作流程,以及熟悉Java编程语言,因为Hive主要用Java实现。 第...

    Hive语法及技术进阶.pdf

    本文将详细介绍 Hive 语法的基本概念、创建表、加载数据、查询数据等知识点。 一、Hive 基本语法-建表 Hive 表是 Hive 中的基本概念,用于存储数据。创建表是 Hive 中的基本操作,用于定义表的结构。Hive 提供了...

    Hive语法及技术进阶.pptx

    Hive 的基本语法包括创建表、加载数据、查询数据等。创建表的基本语法是: `CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] ...

    Hive语法详解

    ### Hive SQL语法详解 #### 一、Hive简介与特性 Hive是一个建立在Hadoop之上的数据...以上是关于Hive SQL语法的一些基本介绍和详细说明。通过理解这些概念和语法,你可以更好地利用Hive来进行大数据的处理和分析。

    HIVE语法.docx

    根据给定文件的信息,我们可以总结出Hive中的关键知识点,主要涵盖Hive的常用函数以及基本的运算操作。Hive是一种基于Hadoop的数据仓库工具,它提供了类SQL的查询语言"HiveQL"来处理存储在Hadoop文件系统中的大规模...

    01.hive查询语法--基本查询--条件查询--关联查询.mp4

    01.hive查询语法--基本查询--条件查询--关联查询.mp4

    Hive语法详解.docx (排版清晰,覆盖全面,含目录)

    ### Hive语法详解 #### 一、安装和配置 **1.1 要求** - **硬件需求**:为了高效地运行Hive,推荐至少具备4GB内存,并且Hive服务器应该有足够的磁盘空间来存储元数据。 - **软件需求**:Hive需要Java环境支持,...

    Hive基础,详解介绍HIVESQL中的语法

    Hive基础,详解介绍HIVESQL中的语法

    Hive函数及语法说明.docx

    Hive 支持基本的 SQL 操作,如 SELECT、FROM、WHERE、GROUP BY、JOIN 等,这些构成了 Hive 查询的基础。 #### 扩展语法 为了满足更复杂的需求,Hive 还允许添加自定义语法。例如,`cube` 和 `rollup` 用于多维数据...

    hive-sql语法大全

    Hive SQL 语法大全 Hive SQL 语法大全是 Hive 中的 SQL 语法说明,涵盖了数据库操作、表操作、数据类型等方面的知识点。 一、数据库操作 1. 创建数据库:CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION '...

    HIVE从入门到精通.pdf

    #### 十、Hive基本语法 - **常用语句**:包括SELECT、INSERT、UPDATE、DELETE等SQL-like语句。 #### 十一、Hive操作语句 - **DDL语句**:包括CREATE TABLE、ALTER TABLE、DROP TABLE等。 - **DML语句**:包括...

    hive 创建表语法.docx

    Hive 创建表语法是 Hive 中的一种基本操作,用于创建 Hive 表。Hive 表可以是内部表,也可以是外部表。下面将详细介绍 Hive 创建表语法的使用。 EXTERNAL 关键字 在 Hive 中,使用 EXTERNAL 关键字可以创建外部表...

    Hadoop-2.8.0-HA-Hive安装部署与HQL09.hive的基本语法--建表语法.mp4

    Hadoop-2.8.0-HA-Hive安装部署与HQL09.hive的基本语法--建表语法.mp4

    Hive随笔.docx

    【Hive 基础语法】 Hive 支持多种数据库操作语言: 1. DDL(Data Definition Language):用于创建、删除和修改数据库对象,如表、列等。 2. DML(Data Manipulation Language):用于插入、删除和更新数据。 3. ...

    Hadoop-2.8.0-HA-Hive安装部署与HQL11.hive的基本语法--CTAS建表.mp4

    Hadoop-2.8.0-HA-Hive安装部署与HQL11.hive的基本语法--CTAS建表.mp4

Global site tag (gtag.js) - Google Analytics