惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
腾讯CDC
A
About on SuperTechFans
Vercel News
Vercel News
I
InfoQ
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
S
SegmentFault 最新的问题
V
Visual Studio Blog
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
美团技术团队

博客园 - sinodzh

从零自学Hadoop(24):Impala相关操作上 从零自学Hadoop(23):Impala介绍及安装 Hadoop技巧(04):简易处理solr date 时区问题 从零自学Hadoop(22):HBase协处理器 从零自学Hadoop(21):HBase数据模型相关操作下 从零自学Hadoop(20):HBase数据模型相关操作上 从零自学Hadoop(19):HBase介绍及安装 Hadoop技巧(03):HostName命名带来的问题 Hadoop技巧(02):时间同步 使用Nexus搭建Maven本地仓库 Hadoop技巧(01):插件,终端权限 Hadoop技巧系列索引 从零自学Hadoop(18):Hive的CLI和JDBC 从零自学Hadoop(17):Hive数据导入导出,集群数据迁移下 从零自学Hadoop(16):Hive数据导入导出,集群数据迁移上 从零自学Hadoop(15):Hive表操作 从零自学Hadoop(14):Hive介绍及安装 从零自学Hadoop(13):Hadoop命令下 从零自学Hadoop(12):Hadoop命令中
从零自学Hadoop(25):Impala相关操作下
sinodzh · 2017-10-26 · via 博客园 - sinodzh

  阅读目录

本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。

     上一篇,我们介绍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

  查看

  导入

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

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

查询

  查询这里就只举几个可能需要注意到的,其他的语法可以详见官网。

一: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;

--------------------------------------------------------------------

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

系列索引

  【源】从零自学Hadoop系列索引

本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。