- 浏览: 306595 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (165)
- hadoop (47)
- linux (11)
- nutch (7)
- hbase (7)
- solr (4)
- zookeeper (4)
- J2EE (1)
- jquery (3)
- java (17)
- mysql (14)
- perl (2)
- compass (4)
- suse (2)
- memcache (1)
- as (1)
- roller (1)
- web (7)
- MongoDB (8)
- struts2 (3)
- lucene (2)
- 算法 (4)
- 中文分词 (3)
- hive (17)
- noIT (1)
- 中间件 (2)
- maven (2)
- sd (0)
- php (2)
- asdf (0)
- kerberos 安装 (1)
- git (1)
- osgi (1)
- impala (1)
- book (1)
- python 安装 科学计算包 (1)
最新评论
-
dandongsoft:
你写的不好用啊
solr 同义词搜索 -
黎明lm:
meifangzi 写道楼主真厉害 都分析源码了 用了很久. ...
hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker -
meifangzi:
楼主真厉害 都分析源码了
hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker -
zhdkn:
顶一个,最近也在学习设计模式,发现一个问题,如果老是看别人的博 ...
Java观察者模式(Observer)详解及应用 -
lvwenwen:
木南飘香 写道
高并发网站的架构
hive 基本语法
本来想讲自己用到的写出来了,结果发现一个比较全面的文章已经介绍过了,那我就不在重新发明轮子了,我也跟着学习一下。
转自: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;
发表评论
-
博客地址变更
2013-08-16 10:29 1222all the guys of visiting the bl ... -
hive 复杂数据结构嵌套
2013-03-14 16:03 5051Hive hive 除了支持基本的数据结构 hive 复 ... -
hive topN 实现
2012-12-14 06:51 2008hive的topN实现 hive的topN实现方式有很多种, ... -
Hive与表操作有关的语句
2012-12-03 14:25 1440Hive与表操作有关的语句 1.创建表的语句: Create ... -
hive参数
2012-11-29 10:18 0第一部分:Hive 参数 hive ... -
hive中的LEFT SEMI JOIN
2012-11-28 14:06 2032hive中的LEFT SEMI JOIN LEFT S ... -
hive 自定义udf
2012-10-24 10:42 1378Hive的预定义UDF函数列表如下 abs(x) - ret ... -
hive Sort By/Order By/Cluster By/Distribute By
2012-10-22 16:51 1102hive Sort By/Order By/Cluster B ... -
hive的权限控制
2012-10-09 17:48 1658hive的权限控制 hiveserver 不支持 并发的访 ... -
hive 基本数据类型
2012-08-30 18:53 0同事整理的,大部分原文摘过来,有少量改动。 1. 基本数据类 ... -
hive cli 操作表分区
2012-08-10 14:04 1292hive表分区 必须在表定义时创建partition a、 ... -
Hive 数据倾斜总结
2012-08-03 14:19 1123Hive 数据倾斜总结 转载:http://www.tbda ... -
hive中 array,map
2012-04-11 23:03 0关于map的操作说明: drop table table2; ... -
hive array数组
2012-04-11 22:58 0hive中的ARRAY类型array是hive中的数组类型 ... -
hive partitions 操作
2012-04-11 11:00 0必须在表定义时创建partition a、单分区建表语句:c ... -
hive 表分区使用
2012-04-09 14:59 0hive表分区 必须在表定义时创建partition ... -
hive执行作业时reduce任务个数设置为多少合适?
2012-04-05 18:05 1370Hive怎样决定reducer个数? Hadoop MapR ... -
JDBC 客户端 连接hive
2012-03-26 16:29 1343Hive的JDBC连接 博客分类: hive JDBCDer ... -
hive 操作语句
2012-02-13 14:13 1011https://cwiki.apache.org/conflu ... -
hive+hbase整合
2012-02-03 16:48 6115用hbase做数据库,但由于hbase没有类sql查询方式, ...
相关推荐
Hive_Sql语法详述,平时工作中遇到的问题,用于Hadoop平台的数据挖掘。
2. **研究Hive SQL语法**:熟悉Hive SQL的特性和与标准SQL的不同之处,例如Hive的JOIN操作、分区查询、窗口函数等。 3. **创建Hive SQL的Antlr4语法规则**:根据Hive SQL的语法特性,编写对应的Antlr4语法规则文件...
// 具有子查询的sql String hql = "select id,name from (select id from table_1 where id={p0}) t1 inner join (select name --this is name\n from table_2) t2"; // 获取id字段的血缘 LineageNode idNode = ...
Hive SQL 语法大全 Hive SQL 语法大全是 Hive 中的 SQL 语法说明,涵盖了数据库操作、表操作、数据类型等方面的知识点。 一、数据库操作 1. 创建数据库:CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION '...
Hive SQL语法与关系型数据库的SQL语法类似,但也有一些差异。 Hive SQL支持绝大多数的语句,如DDL、DML、聚合函数、连接查询、条件查询等。 * SELECT:选择表中的数据。 * FROM:指定表名。 * WHERE:指定条件。 * ...
2. Hive SQL 语法规则 在编写Hive SQL时,应遵循以下语法规则和最佳实践: 2.1 数据类型 了解并正确使用数据类型是编写高效Hive SQL的基础。 2.1.1 整型 Hive支持TINYINT(1字节),SMALLINT(2字节),INT(4字节...
在大数据处理领域,Hive是一个不可或缺的工具,它允许用户使用SQL语法来处理存储在Hadoop集群中的结构化数据。Hive将SQL语句转换为MapReduce任务,使其适合处理大规模数据集的批处理作业,而不是实时查询或行级更新...
- **Phase1 SQL词法,语法解析**:Hive使用Antlr工具解析SQL,生成抽象语法树(AST Tree)。Antlr是一个强大的解析工具,能够解析特定的语言结构,如HiveQL。 - **Phase2 AST Tree到QueryBlock**:接下来,Hive...
### Hive SQL语法详解 #### 一、Hive简介与特性 Hive是一个建立在Hadoop之上的数据仓库工具,主要用于对存储在Hadoop文件系统(HDFS)中的数据进行数据分析和处理。它提供了类似SQL的查询语言——Hive SQL,使得...
最近工作中遇到将达梦抽取sql迁移到数仓进行计算的的时候发现sql和hivesql语法上有些许区别,只能去解决了不得不学习hivesql,通过实践总结出来了一些改造过程中的注意事项和两类sql的区别,省去大家学习踩坑过程,...
在大数据处理领域,Hive是一个广泛使用的开源工具,它提供了SQL-like接口来处理存储在分布式存储系统(如HDFS)中的大规模数据集。Hive Parser是Hive中的一个关键组件,用于解析用户输入的SQL语句,将其转化为Hive...
这个阶段的任务是根据预定义的语法规则(通常是一个上下文无关文法,如BNF表示法)检查Token序列是否符合HiveSQL的语法规则,并构造出一个抽象语法树(AST)。AST是对SQL语句结构的直观表示,每个节点都代表SQL语句...
对于不被 Hive 内置支持的 SQL 语法,开发者可以按照规定开发语法转换模块,将 Oracle SQL 转换为等效的 Hive SQL。 ### 参考链接 Apache Hive 的官方 Wiki 页面提供了详细的函数和语法说明,可通过以下链接获取:...
总结起来,《最强HiveSQL开发指南》全面涵盖了Hive的基本操作、查询语法、性能优化策略及实战经验,是学习和提升Hive技能的宝贵资源。通过深入学习和实践,读者可以更好地驾驭Hive,应对大数据环境下的各种挑战。
Hive-SQL语法大全
### HiveSQL解析原理详解 #### 一、引言 Hive作为一款建立在Hadoop之上的数据仓库系统,被广泛应用于大数据处理场景中。对于众多企业和组织而言,它不仅是存储和管理海量数据的有效手段,同时也是进行数据分析的...
这部分主要涉及 SQL 查询的基础语法,包括 SELECT、FROM、WHERE 等子句的使用。 - **查询所有学生的姓名和生日** ```sql SELECT stu_name, birthday FROM student_info; ``` - **查询某门课程的所有成绩** ```...
在Hive中,词法分析是将输入的SQL语句分解成一个个词法单元(如标识符、关键字、运算符等)。这部分可能会介绍如何快速找到词法和语法分析的相关代码,以及ANTLR生成的语法文件间的相互关系。静态分析语法文件通常是...
HiveSQL思维导图,便捷整理思路,HiveBeeline、HiveDDL、HiveDML、Hive分区、HiveSerDe