好文档 - 专业文书写作范文服务资料分享网站

先电大数据平台操作手册-iandian-bigdata-v2.1

天下 分享 时间: 加入收藏 我要投稿 点赞

hive> create table choice(userid int,classname string) row format delimited fields terminated by '\\t';

注意:'\\t'相当于一个tab键盘。 显示刚才创建的数据表: hive> show tables; 2. 导入数据

建表后,可以从本地文件系统或 HDFS 中导入数据文件,导入数据样例如下: 内容如下(数据之间用tab键隔开): 1 xiapi 2 xiaoxue 3 qingqing

内容如下(数据之间用tab键隔开): jack math sam china lucy english

内容如下(数据之间用tab键隔开): 1 math 1 china 1 english 2 china 2 english 3 english

首先在本地“/home/hadoop/ziliao”下按照上面建立三个文件, 并添加如上的内容信息。

3. 按照下面导入数据。

hive> load data local inpath '/home/hadoop/ziliao/' overwrite into table userinfo;

hive> load data local inpath '/home/hadoop/ziliao/' overwrite into table classinfo;

hive> load data local inpath '/home/hadoop/ziliao/' overwrite into table choice;

查询表数据

hive> select * from userinfo; hive> select * from classinfo; hive> select * from choice; 4. 分区

创建分区

hive> create table ptest(userid int) partitioned by (name string) row format delimited fields terminated by '\\t';

准备导入数据

内容如下(数据之间用tab键隔开): 1 导入数据

hive> load data local inpath '/home/hadoop/ziliao/' overwrite into table ptest partition (name='xiapi');

查看分区

hive> dfs -ls /user/hive/warehouse/ptest/name=xiapi; 查询分区

hive> select * from ptest where name='xiapi'; 显示分区

hive> show partitions ptest;

对分区插入数据(每次都会覆盖掉原来的数据):

hive> insert overwrite table ptest partition(name='xiapi') select id from userinfo where name='xiapi';

删除分区

hive> alter table ptest drop partition (name='xiapi') 5. 桶

可以把表或分区组织成桶, 桶是按行分开组织特定字段, 每个桶对应一个 reduce 操作。在建立桶之前, 需要设置“属性为 true, 使 Hive 能够识别桶。在表中分桶的操作如下:

hive> set set create table btest2(id int, name string) clustered by(id) into 3 buckets row format delimited fields terminated by '\\t';

向桶中插入数据, 这里按照用户 id 分了三个桶, 在插入数据时对应三个 reduce 操作,输出三个文件。

hive> insert overwrite table btest2 select * from userinfo; 查看数据仓库下的桶目录,三个桶对应三个目录。 hive> dfs -ls /user/hive/warehouse/btest2;

Hive 使用对分桶所用的值进行 hash,并用 hash 结果除以桶的个数做取余运算的方式来分桶,保证了每个桶中都有数据,但每个桶中的数据条数不一定相等,如下所示。

hive>dfs -cat /user/hive/warehouse/btest2/*0_0; hive>dfs -cat /user/hive/warehouse/btest2/*1_0; hive>dfs -cat /user/hive/warehouse/btest2/*2_0;

分桶可以获得比分区更高的查询效率,同时分桶也便于对全部数据进行采样处理。下面是对桶取样的操作。

hive>select * from btest2 tablesample(bucket 1 out of 3 on id); 6. 多表插入

多表插入指的是在同一条语句中, 把读取的同一份元数据插入到不同的表中。只需要扫描一遍元数据即可完成所有表的插入操作, 效率很高。多表操作示例如下。

hive> create table mutill as select id,name from userinfo; #有数据 hive> create table mutil2 like mutill; #无数据,只有表结构 hive> from userinfo insert overwrite table mutill

select id,name insert overwrite table mutil2 select count(distinct id),name group by name; 7. 连接

连接是将两个表中在共同数据项上相互匹配的那些行合并起来, HiveQL 的连接分为内连接、左向外连接、右向外连接、全外连接和半连接 5 种。

a. 内连接(等值连接)

内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行。 例如, 检索userinfo和choice表中标识号相同的所有行。

hive> select userinfo.*, choice.* from userinfo join choice on=; b. 左连接

左连接的结果集包括“LEFT OUTER”子句中指定的左表的所有行, 而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行, 则在相关联的结果集中右表的所有选择列均为空值。

hive> select userinfo.*, choice.* from userinfo left outer join choice on=; c. 右连接

右连接是左向外连接的反向连接,将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

hive> select userinfo.*, choice.* from userinfo right outer join choice on=; d. 全连接

全连接返回左表和右表中的所有行。当某行在另一表中没有匹配行时,则另一个表的选择列表包含空值。如果表之间有匹配行,则整个结果集包含基表的数据值。

hive> select userinfo.*, choice.* from userinfo full outer join choice on=; e. 半连接

半连接是 Hive 所特有的, Hive 不支持 IN 操作,但是拥有替代的方案; left semi join, 称为半连接, 需要注意的是连接的表不能在查询的列中,只能出现在 on 子句中。

hive> select userinfo.* from userinfo left semi join choice on =; 8. 子查询

标准 SQL 的子查询支持嵌套的 select 子句,HiveQL 对子查询的支持很有限,只能在from 引导的子句中出现子查询。如下语句在 from 子句中嵌套了一个子查询(实现了对教课最多的老师的查询)。

hive>select teacher,MAX(class_num) from (select teacher,count(classname) as class_num from classinfo group by teacher) subq group by teacher; 9. 视图操作

目前,只有 之后的版本才支持视图。

Hive 只支持逻辑视图, 并不支持物理视图, 建立视图可以在 MySQL 元数据库中看到创建的视图表, 但是在 Hive 的数据仓库目录下没有相应的视图表目录。

当一个查询引用一个视图时, 可以评估视图的定义并为下一步查询提供记录集合。这是一种概念的描述, 实际上, 作为查询优化的一部分, Hive 可以将视图的定义与查询的定义结合起来,例如从查询到视图所使用的过滤器。

在视图创建的同时确定视图的架构,如果随后再改变基本表(如添加一列)将不会在视图的架构中体现。如果基本表被删除或以不兼容的方式被修改,则该视图的查询将被无效。

视图是只读的,不能用于 LOAD/INSERT/ALTER。

视图可能包含 ORDER BY 和 LIMIT 子句,如果一个引用了视图的查询也包含这些子句,那么在执行这些子句时首先要查看视图语句,然后返回结果按照视图中的语句执行。

以下是创建视图的例子:

hive> create view teacher_classsum as select teacher, count(classname) from classinfo group by teacher;

删除视图:

hive>drop view teacher_classnum; 10. 函数

创建函数

hive> create temporary function function_name as class_name

该语句创建一个由类名实现的函数。在 Hive 中用户可以使用 Hive 类路径中的任何类,用户通过执行 add files 语句将函数类添加到类路径,并且可持续使用该函数进行操

先电大数据平台操作手册-iandian-bigdata-v2.1

hive>createtablechoice(useridint,classnamestring)rowformatdelimitedfieldsterminatedby'\\t';注意:'\\t'相当于一个tab键盘。显示刚才创建的数据表:hive>showtables;2.导入数据建表后,可以从本地文件系统或HDFS
推荐度:
点击下载文档文档为doc格式
9reqv47be06m3qp9xkwe9ersa9ps1u00x9f
领取福利

微信扫码领取福利

微信扫码分享