hive文档
https://cwiki.apache.org/confluence/display/Hive/Home
开启本地模式
set hive.exec.mode.local.auto=true;
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常用命令详解 #### 创建外部表(分区表) 在Hive中,创建外部表时通常会使用`CREATE EXTERNAL TABLE`语句。这有助于在Hive与HDFS之间建立良好的解耦关系,使得即使Hive表被删除,其对应的数据仍然保留在...
### Hive 常用命令总结 #### 创建外部表 创建一个名为`hbase_gpsinfo`的外部表,存储方式采用`HBaseStorageHandler`,并将键值对映射设置为`key`和`i:c`。 ```sql CREATE EXTERNAL TABLE hbase_gpsinfo (key STRING...
### Hive常用命令详解 Hive是一款基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类似SQL的查询语言HQL,让使用者能够方便地进行数据查询与分析。以下是对给定文件中提到的Hive常用...
3. 导入数据到`stocks`表,这是通过LOAD DATA命令实现的,将csv文件的数据加载到Hive表中。 4. 创建未分区的外部表`dividends_unpartitioned`,然后从csv文件导入数据。外部表的元数据由Hive管理,但数据本身的位置...
hive常用命令及用法
hive常用命令 1、进入hive数据库:hive 2、查看hive中的所有数据库:show databases; 3、用default数据库:use default; 4、查看所有的表:show tables; 5、查询表结构:desc mytest(表名); 6、查询表数据: ...
Hive 常用的 SQL 命令操作 Hive 是一个基于 Hadoop 的数据仓储工具,提供了类似于 MySQL 的 SQL 查询语言,支持各种复杂的数据操作。下面是 Hive 中常用的 SQL 命令操作。 1. 查看所有函数 Hive 提供了很多的函数...
#### 五、Hive常用命令 1. **查看所有表**:`SHOW TABLES;` 2. **模糊查询表**:`SHOW TABLES 'FCT_*';` 3. **查看表的分区**:`SHOW PARTITIONS table;` 4. **查看表结构**:`DESCRIBE (FORMATTED/EXTENDED) table...
一、Hive常用操作 1. **查看数据库列表**:可以使用`SHOW DATABASES;`命令来查看Hive中现有的所有数据库。 2. **查看数据表列表**:`SHOW TABLES [LIKE '*name*'];`用于列出特定数据库或所有数据库中的表。 3. **...
### HIVE常用函数参考手册知识点概述 #### 一、函数分类 Hive中的函数可以根据其功能和作用范围分为几大类: 1. **简单函数**:这类函数通常针对单条记录进行操作,如数学运算、逻辑运算等。 2. **聚合函数**:...
Hive 教程--命令 Hive 是一种数据库技术,可以定义数据库和表来分析结构化数据。主题结构化数据分析是以表方式存储数据,并通过查询来分析。 创建数据库 创建数据库是 Hive 中最基本的操作之一。Hive 中的数据库...
使用这些jar包时,开发者通常会将它们添加到项目的类路径中,或者在运行Hive命令时通过`-libjars`选项指定。在Hive on Spark模式下,还需要包含Spark的相关jar包。此外,如果涉及到数据集成,可能还需要与Hive连接的...
从提供的文件内容中,我们可以提取到关于Hive安装与配置的相关知识点,同时也包括了MySQL的安装知识,因为MySQL是Hive常用的后端数据库。接下来,我将详细介绍这些知识点。 **Hive的安装与配置** 1. Hive是一个...
其中,CLI是最常用的交互方式,它在启动时会自动启动一个Hive服务副本;而Client则是指Hive的Java客户端API,通过该API可以直接在应用程序中执行Hive SQL;WUI则提供了基于Web的用户界面,方便用户远程访问和管理...
标题提到的"show create table 表名"是Hive的一个常用命令,用于展示创建特定表的原始SQL语句。这对于理解和复制表结构非常有帮助。然而,描述中提到的“hive中文乱码”问题,是一个常见的困扰,尤其是在处理包含...
以下是 Hive Shell 的常用命令行选项: - `-i`: 从指定的文件初始化 HiveQL 语句。 - `-e`: 直接在命令行中执行 HiveQL 语句。 - `-f`: 从指定的文件中读取并执行 HiveQL 脚本。 - `-v`: 显示执行的 HiveQL 语句。 ...