创建表
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;
分享到:
相关推荐
Hive 常用的 SQL 命令操作 Hive 是一个基于 Hadoop 的数据仓储工具,提供了类似于 MySQL 的 SQL 查询语言,支持各种复杂的数据操作。下面是 Hive 中常用的 SQL 命令操作。 1. 查看所有函数 Hive 提供了很多的函数...
### HIVE-SQL操作语句详解 #### 一、创建表 (CREATE TABLE) 在Hive中,`CREATE TABLE` 语句用于创建新的表。与传统的关系型数据库类似,但在Hive中有其特殊之处。 ##### 示例 ```sql hive> CREATE TABLE pokes ...
Hive基本操作命令大全 Hive是一个基于Hadoop的数据仓库工具,可以使用SQL语言来查询和管理大规模数据。本文档将详细介绍Hive的基本操作命令,从创建表、加载数据、查询数据到数据管理等方面进行整理。 创建表 ...
1.上传tar包 2.解压 tar -zxvf hive-1.2.1.tar.gz 3.安装mysql数据库 推荐yum 在线安装 4.配置hive (a)配置HIVE_HOME环境变量 ... 4.Hive命令 hive -e ‘sql’ bin/hive -e 'select * from t_test'
DDL操作是Hive中最基本的操作,包括创建表、删除表、修改表结构、创建/删除视图、创建数据库、显示命令等。 * CREATE TABLE:创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用IF NOT EXIST...
以上就是关于Hive基本命令操作的一些核心知识点,包括创建表、查看表结构、数据加载以及查询等。在实际操作中,根据业务需求选择合适的数据模型(如分区表)并正确地管理数据,能够极大地提高数据处理的效率和便利性...
### Hive常用命令详解 #### 创建外部表(分区表) ...以上命令涵盖了Hive中常用的管理和操作命令,包括表的创建、修改、查看执行计划、加载数据以及管理分区等功能。这些命令对于维护和优化Hive数据库是非常重要的。
以下是对给定文件中提到的Hive常用命令的详细解析,帮助您更好地理解和掌握Hive的操作。 #### 创建表 1. **基本创建**: `CREATE TABLE pokes(foo INT, bar STRING);` - 这条命令用于创建一个名为`pokes`的表,...
### Hive SQL练习题库知识点详解 #### 一、Hive SQL概述 Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化的数据...通过以上的练习,初学者可以逐步掌握 Hive SQL 的基本操作,并为进一步的学习打下坚实的基础。
在本实验报告中,我们关注的是大数据处理工具Hive的基础操作,主要涵盖了创建表、导入数据以及使用Hive进行数据管理。Hive是基于Hadoop的数据仓库工具,它允许通过SQL-like查询语言(HQL)对分布式存储的大数据集...
本资料包包含了两个关键文件:2013_12.csv 和 Hive指令样例.txt,分别用于理解Hive中的数据文件格式和基本操作命令。 2013_12.csv 文件是一个CSV(Comma Separated Values)文件,这是一种常见的数据交换格式,以...
本篇将详细介绍Hive的一些常用操作,包括数据操作、函数应用、逻辑运算、日期处理以及集合统计等功能。 一、Hive常用操作 1. **查看数据库列表**:可以使用`SHOW DATABASES;`命令来查看Hive中现有的所有数据库。 2...
在Hive中,你需要将这个UDAF类编译成JAR包,然后通过`ADD JAR`命令将其添加到Hive的类路径中,接着可以使用`DEFINE`语句注册UDAF。之后,你就可以在查询中像使用内置聚合函数一样使用这个UDAF了。 六、实际应用 ...
以下是 Hive Shell 的常用命令行选项: - `-i`: 从指定的文件初始化 HiveQL 语句。 - `-e`: 直接在命令行中执行 HiveQL 语句。 - `-f`: 从指定的文件中读取并执行 HiveQL 脚本。 - `-v`: 显示执行的 HiveQL 语句。 ...
创建表的操作通过Hive SQL完成,即使用`CREATE TABLE`命令。这个命令定义了一个新表的结构,包括列名、数据类型和注释。例如,创建一个名为`hive_wordcount`的表,用于存储文本数据。建表时可以使用`ROW FORMAT ...
"分隔的SQL命令。这种功能对于批处理或自动化脚本执行非常有用,因为它减少了多次调用解析器的必要性,提高了效率。 该工具类的主要方法可能是接收SQL字符串,然后使用Hive的解析引擎将这些SQL语句分解为结构化的...
以下是对Hive SQL常用操作的详细解释: 1. **创建分区表**: - 单分区建表:创建表时指定一个分区列,如`CREATE TABLE day_table (id int, content string) PARTITIONED BY (dt string);` - 双分区建表:创建表时...
`explain` 是查看HiveSQL执行计划的基础命令。通过在HiveSQL查询语句前添加`EXPLAIN`关键字,我们可以获得关于查询如何被Hive解释和执行的详细信息。这些信息通常包括但不限于查询的逻辑结构、操作符的执行顺序以及...