`

Hive常用的SQL命令操作

    博客分类:
  • hive
阅读更多
创建表

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命令操作[定义].pdf

    Hive 常用的 SQL 命令操作 Hive 是一个基于 Hadoop 的数据仓储工具,提供了类似于 MySQL 的 SQL 查询语言,支持各种复杂的数据操作。下面是 Hive 中常用的 SQL 命令操作。 1. 查看所有函数 Hive 提供了很多的函数...

    HIVE-SQL操作语句

    ### HIVE-SQL操作语句详解 #### 一、创建表 (CREATE TABLE) 在Hive中,`CREATE TABLE` 语句用于创建新的表。与传统的关系型数据库类似,但在Hive中有其特殊之处。 ##### 示例 ```sql hive&gt; CREATE TABLE pokes ...

    Hive基本操作命令大全

    Hive基本操作命令大全 Hive是一个基于Hadoop的数据仓库工具,可以使用SQL语言来查询和管理大规模数据。本文档将详细介绍Hive的基本操作命令,从创建表、加载数据、查询数据到数据管理等方面进行整理。 创建表 ...

    hivesql语句练习

    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'

    Hive中SQL详解

    DDL操作是Hive中最基本的操作,包括创建表、删除表、修改表结构、创建/删除视图、创建数据库、显示命令等。 * CREATE TABLE:创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用IF NOT EXIST...

    Hive 基本命令操作1

    以上就是关于Hive基本命令操作的一些核心知识点,包括创建表、查看表结构、数据加载以及查询等。在实际操作中,根据业务需求选择合适的数据模型(如分区表)并正确地管理数据,能够极大地提高数据处理的效率和便利性...

    hive常用命令+日常

    ### Hive常用命令详解 #### 创建外部表(分区表) ...以上命令涵盖了Hive中常用的管理和操作命令,包括表的创建、修改、查看执行计划、加载数据以及管理分区等功能。这些命令对于维护和优化Hive数据库是非常重要的。

    hive常用命令

    以下是对给定文件中提到的Hive常用命令的详细解析,帮助您更好地理解和掌握Hive的操作。 #### 创建表 1. **基本创建**: `CREATE TABLE pokes(foo INT, bar STRING);` - 这条命令用于创建一个名为`pokes`的表,...

    Hive SQL练习题库

    ### Hive SQL练习题库知识点详解 #### 一、Hive SQL概述 Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化的数据...通过以上的练习,初学者可以逐步掌握 Hive SQL 的基本操作,并为进一步的学习打下坚实的基础。

    大数据技术原理及应用课实验6 :熟悉Hive的基本操作

    3. 导入数据到`stocks`表,这是通过LOAD DATA命令实现的,将csv文件的数据加载到Hive表中。 4. 创建未分区的外部表`dividends_unpartitioned`,然后从csv文件导入数据。外部表的元数据由Hive管理,但数据本身的位置...

    大数据实验六实验报告:熟悉Hive的基本操作

    在本实验报告中,我们关注的是大数据处理工具Hive的基础操作,主要涵盖了创建表、导入数据以及使用Hive进行数据管理。Hive是基于Hadoop的数据仓库工具,它允许通过SQL-like查询语言(HQL)对分布式存储的大数据集...

    Hive数据文件以及CLI操作命令

    本资料包包含了两个关键文件:2013_12.csv 和 Hive指令样例.txt,分别用于理解Hive中的数据文件格式和基本操作命令。 2013_12.csv 文件是一个CSV(Comma Separated Values)文件,这是一种常见的数据交换格式,以...

    第十一节、HIVE常用操作.pdf1

    本篇将详细介绍Hive的一些常用操作,包括数据操作、函数应用、逻辑运算、日期处理以及集合统计等功能。 一、Hive常用操作 1. **查看数据库列表**:可以使用`SHOW DATABASES;`命令来查看Hive中现有的所有数据库。 2...

    hive udaf 实现按位取与或

    在Hive中,你需要将这个UDAF类编译成JAR包,然后通过`ADD JAR`命令将其添加到Hive的类路径中,接着可以使用`DEFINE`语句注册UDAF。之后,你就可以在查询中像使用内置聚合函数一样使用这个UDAF了。 六、实际应用 ...

    Java私塾:Hive Shell 基本操作——深入浅出学Hive

    以下是 Hive Shell 的常用命令行选项: - `-i`: 从指定的文件初始化 HiveQL 语句。 - `-e`: 直接在命令行中执行 HiveQL 语句。 - `-f`: 从指定的文件中读取并执行 HiveQL 脚本。 - `-v`: 显示执行的 HiveQL 语句。 ...

    hive环境搭建和建表加载数据

    创建表的操作通过Hive SQL完成,即使用`CREATE TABLE`命令。这个命令定义了一个新表的结构,包括列名、数据类型和注释。例如,创建一个名为`hive_wordcount`的表,用于存储文本数据。建表时可以使用`ROW FORMAT ...

    hive parser工具类

    "分隔的SQL命令。这种功能对于批处理或自动化脚本执行非常有用,因为它减少了多次调用解析器的必要性,提高了效率。 该工具类的主要方法可能是接收SQL字符串,然后使用Hive的解析引擎将这些SQL语句分解为结构化的...

    hiveSql.docx

    以下是对Hive SQL常用操作的详细解释: 1. **创建分区表**: - 单分区建表:创建表时指定一个分区列,如`CREATE TABLE day_table (id int, content string) PARTITIONED BY (dt string);` - 双分区建表:创建表时...

Global site tag (gtag.js) - Google Analytics