大数据技术 Hadoop学习(25):Impala相关操作下
沉沙 2018-10-08 来源 : 阅读 1178 评论 0

摘要:本篇教程探讨了大数据技术 Hadoop学习(25):Impala相关操作下,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

本篇教程探讨了大数据技术 Hadoop学习(25):Impala相关操作下,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

<


 


     上一篇,我们介绍Impala的相关操作。
   下面我们开始继续进一步的了解Impala的相关操作。

导入数据

一:INSERT VALUES
  该方式不适合载入大量的数据到基于 HDFS (HDFS-based)的表,因为插入操作无法并行,并且每一个语句会产生单独的数据文件,形成很多小文件。  不要运行每次只插入单行数据的 很多条的 INSERT ... VALUES 语句的脚本,会产生很多小文件。将数据都放在VALUES中会好很多,就没有那多的小文件。

insert into student values ('1','张三','男','2017-10-23 10:10:20'), ('2','李四','男','2017-10-23 10:10:20'), ('3','王五','男','2017-10-23 10:10:20');
insert into student values ('4','张三1','男','2017-10-23 10:10:20'), ('5','李四1','男','2017-10-23 10:10:20'), ('6','王五1','男','2017-10-23 10:10:20');

  使用insert into table 语法,每一组新插入的数据,都会追加到原来的数据后。 
 
 

  我们可以看到hdfs中有两个文件。也就是说insert一次就生成一个文件,所以会产生很多小文件。

  使用insert overwrite table 语法,每一组新插入的数据,都会覆盖表中原有的数据。

insert overwrite student values ('7','张三2','男','2017-10-23 10:10:20'), ('8','李四2','男','2017-10-23 10:10:20'), ('9','王五2','男','2017-10-23 10:10:20');


二:LOAD DATA语句
  LOAD DATA 语句简化了 Impala 内部表从 HDFS 位置移动一个或目录下所有数据文件到该表对应的 Impala 数据目录中的 ETL 过程。
  新建待导入文件数据 student.txt

  从本地上传到hdfs

sudo -u impala hdfs dfs -put student.txt /tmp/student.txt

  查看

hadoop fs -ls /tmp/


  导入

load data inpath '/tmp/student.txt' into table student ;




  可以看到文件的内容导入到了表中,  并且对应的hdfs目录的文件已经不再了。
  重新将文件上传到对应目录  然后重新导入  这次我们使用overwrite

load data inpath '/tmp/student.txt' overwrite into table student ;


  可以看到数据已经加载进去,并且原有的数据都被替换掉了。
三:分区表的load data
  新增分区

alter table student_p  add partition (year='2017',month='01',day='01');
alter table student_p  add partition (year='2017',month='01',day='02');



load data inpath '/tmp/student.txt' overwrite into table student_p  partition(year='2017',month='01',day='01') ;
load data inpath '/tmp/student.txt' overwrite into table student_p  partition(year='2017',month='01',day='02') ;

  这之间还需要再将文件上传到hdfs


select * from student_p;


  可见指定了分区后,不会影响到其他分区的数据。
 

查询

  查询这里就只举几个可能需要注意到的,其他的语法可以详见官网。
一:limit
  设置select查询中结果集的最大行数

select * from student limit 1;


二:offset
  offset可以和limit一起使用,可以用于模拟“分页”结果集,实际中最好不要这样用,尽量的将结果集缓存到应用端,在应用端分页。

select * from student order by id  limit 1 offset 0;
select * from student order by id  limit 1 offset 1;


 
  
--------------------------------------------------------------------
  到此,本章节的内容讲述完毕。

   

本文由职坐标整理发布,学习更多的大数据技术相关知识,请关注职坐标大技术云计算大技术技术频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程