本来想讲自己用到的写出来了,结果发现一个比较全面的文章已经介绍过了,那我就不在重新发明轮子了,我也跟着学习一下。
转自:http://jeffxie.blog.51cto.com/1365360/317524
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;
- 浏览: 136230 次
- 性别:
最新评论
-
107x:
wutaozhao 写道感谢楼主,很有帮助,不过不知道楼主是怎 ...
linux安装mysql提示mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended -
wutaozhao:
感谢楼主,很有帮助,不过不知道楼主是怎么得出这样的解决思路的
linux安装mysql提示mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
相关推荐
ANTLR语法的简单介绍会涵盖其基本语法元素,如规则定义、动作代码和语法错误处理。ANTLRworks作为ANTLR的图形化开发环境,可以帮助开发者直观地查看和调试语法结构。 语义分析阶段,即第五章,是理解Hive查询逻辑的...
Hive是Apache Hadoop生态系统中的一个数据仓库工具,它允许用户使用...通过上述的Hive基本语法和使用,我们可以有效地管理和分析大规模数据。结合实际业务需求,合理运用Hive的特性,可以提高数据分析的效率和准确性。
根据给定文件的信息,我们可以总结出Hive中的关键知识点,主要涵盖Hive的常用函数以及基本的运算操作。Hive是一种基于Hadoop的数据仓库工具,它提供了类SQL的查询语言"HiveQL"来处理存储在Hadoop文件系统中的大规模...
### Hive SQL语法详解 #### 一、Hive简介与特性 Hive是一个建立在Hadoop之上的数据...以上是关于Hive SQL语法的一些基本介绍和详细说明。通过理解这些概念和语法,你可以更好地利用Hive来进行大数据的处理和分析。
01.hive查询语法--基本查询--条件查询--关联查询.mp4
创建分区表的基本语法是: ```sql CREATE TABLE [IF NOT EXISTS] table_name ( column1 datatype, column2 datatype, ... ) PARTITIONED BY (partition_column1 datatype, partition_column2 datatype, ...); ``...
Hadoop-2.8.0-HA-Hive安装部署与HQL09.hive的基本语法--建表语法.mp4
### Hive语法详解 #### 一、安装和配置 **1.1 要求** - **硬件需求**:为了高效地运行Hive,推荐至少具备4GB内存,并且Hive服务器应该有足够的磁盘空间来存储元数据。 - **软件需求**:Hive需要Java环境支持,...
一、Hive 基本语法-建表 Hive 表是 Hive 中的基本概念,用于存储数据。创建表是 Hive 中的基本操作,用于定义表的结构。Hive 提供了多种创建表的方式,包括创建普通表、创建外部表、创建分区表等。 1、创建普通表 ...
Hive 支持基本的 SQL 操作,如 SELECT、FROM、WHERE、GROUP BY、JOIN 等,这些构成了 Hive 查询的基础。 #### 扩展语法 为了满足更复杂的需求,Hive 还允许添加自定义语法。例如,`cube` 和 `rollup` 用于多维数据...
Hadoop-2.8.0-HA-Hive安装部署与HQL11.hive的基本语法--CTAS建表.mp4
Hive 的基本语法包括创建表、加载数据、查询数据等。创建表的基本语法是: `CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] ...
通过这个实验,学生能够掌握Hive的基本操作,包括创建表(内部表和分区表)、数据导入、数据查询以及动态分区的使用,这些都是大数据分析中的关键步骤。同时,了解如何在Windows环境下配置和使用Ubuntu虚拟机,以及...
Hive SQL 语法大全 Hive SQL 语法大全是 Hive 中的 SQL 语法说明,涵盖了数据库操作、表操作、数据类型等方面的知识点。 一、数据库操作 1. 创建数据库:CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION '...
Hadoop-2.8.0-HA-Hive安装部署与HQL10.hive的基本语法--内部表和外部表.mp4
Hive 创建表语法是 Hive 中的一种基本操作,用于创建 Hive 表。Hive 表可以是内部表,也可以是外部表。下面将详细介绍 Hive 创建表语法的使用。 EXTERNAL 关键字 在 Hive 中,使用 EXTERNAL 关键字可以创建外部表...
Hadoop-2.8.0-HA-Hive安装部署与HQL12.hive的基本语法--数据导入--从本地--从hdfs.mp4
通过这些操作,我们可以熟练掌握HiveQL的基本语法,如CREATE TABLE、LOAD DATA、INSERT INTO、SELECT等,以及如何利用Hive进行数据分区和复杂查询。此外,实验也强调了Hive在大数据分析中的实用性,特别是在处理大量...
Hive 语法和常用函数 Hive 是一个基于 Hadoop 分布式系统上的数据仓库,最初由 Facebook 公司开发的,极大地推进了 Hadoop 生态系统在数据仓库方面的发展。 Hive 提供了一种 SQL-like 的语言,称为 Hive QL,用于...