第二章 impala基础使用

第二章 impala基本使用

1、impala的使用

1.1、impala-shell语法

1.1.1、impala-shell的外部命令参数语法

不需要进入到impala-shell交互命令行当中即可执行的命令参数

impala-shell后面执行的时候可以带很多参数:

-h 查看帮助文档

impala-shell -h

-r 刷新整个元数据,数据量大的时候,比较消耗服务器性能

impala-shell -r

-B 去格式化,查询大量数据可以提高性能
--print_header 去格式化显示列名
--output_delimiter 指定分隔符
-v 查看对应版本

impala-shell -v -V

-f 执行查询文件
--query_file 指定查询文件

cd /export/servers
vim impala-shell.sql
use weblog;
select * from ods_click_pageviews limit 10;

#通过-f 参数来执行执行的查询文件
impala-shell -f impala-shell.sql

-i 连接到impalad

? --impalad 指定impalad去执行任务

-o 保存执行结果到文件当中去

? --output_file 指定输出文件名

impala-shell -f impala-shell.sql -o hello.txt

-p 显示查询计划

impala-shell -f impala-shell.sql -p

-q 不使用impala-shell进行查询

1.1.2、impala-shell的内部命令行参数语法

进入impala-shell命令行之后可以执行的语法

进入impala-shell:

impala-shell  #任意目录

help命令

帮助文档

?

connect命令

connect hostname 连接到某一台机器上面去执行

refresh命令

refresh dbname.tablename 增量刷新,刷新某一张表的元数据,主要用于刷新hive当中数据表里面的数据改变的情况

用于刷新hive当中数据表里面的数据改变的情况

refresh mydb.stu;

invalidate metadata 命令:

invalidate metadata全量刷新,性能消耗较大,主要用于hive当中新建数据库或者数据库表的时候来进行刷新

invalidate metadata

explain 命令:

用于查看sql语句的执行计划

explain select * from stu;

explain的值可以设置成0,1,2,3等几个值,其中3级别是最高的,可以打印出最全的信息

set explain_level=3;

profile命令:

执行sql语句之后执行,可以打印出更加详细的执行步骤,

主要用于查询结果的查看,集群的调优等

select * from stu;
profile;

? 注意:在hive窗口当中插入的数据或者新建的数据库或者数据库表,在impala当中是不可直接查询到的,需要刷新数据库,在impala-shell当中插入的数据,在impala当中是可以直接查询到的,不需要刷新数据库,其中使用的就是catalog这个服务的功能实现的,catalog是impala1.2版本之后增加的模块功能,主要作用就是同步impala之间的元数据

1.2、创建数据库

1.1.1进入impala交互窗口

impala-shell #进入到impala的交互窗口

1.1.2查看所有数据库

show databases;

1.1.3创建与删除数据库

创建数据库

CREATE DATABASE IF NOT EXISTS mydb1;
drop database  if exists  mydb;

1.3、 创建数据库表

创建student表

CREATE TABLE IF NOT EXISTS mydb1.student (name STRING, age INT, contact INT );

创建employ表

create table employee (Id INT, name STRING, age INT,address STRING, salary BIGINT);

1.3.1、 数据库表中插入数据

insert into employee (ID,NAME,AGE,ADDRESS,SALARY)VALUES (1, 'Ramesh', 32, 'Ahmedabad', 20000 );
insert into employee values (2, 'Khilan', 25, 'Delhi', 15000 );
Insert into employee values (3, 'kaushik', 23, 'Kota', 30000 );
Insert into employee values (4, 'Chaitali', 25, 'Mumbai', 35000 );
Insert into employee values (5, 'Hardik', 27, 'Bhopal', 40000 );
Insert into employee values (6, 'Komal', 22, 'MP', 32000 );

数据的覆盖

Insert overwrite employee values (1, 'Ram', 26, 'Vishakhapatnam', 37000 );

执行覆盖之后,表中只剩下了这一条数据了

另外一种建表语句

create table customer as select * from employee;

1.3.2、 数据的查询

select * from employee;
select name,age from employee; 

1.3.3、 删除表

DROP table  mydb1.employee;

1.3.4、 清空表数据

truncate  employee;

1.3.5、 创建视图

CREATE VIEW IF NOT EXISTS employee_view AS select name, age from employee;

1.3.6、 查看视图数据

select * from employee_view;

1.4、order by语句

基础语法

select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]
Select * from employee ORDER BY id asc;

1.5、group by 语句

Select name, sum(salary) from employee Group BY name; 

1.6、 having 语句

基础语法

select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]

按年龄对表进行分组,并选择每个组的最大工资,并显示大于20000的工资

select max(salary) from employee group by age having max(salary) > 20000

1.7、 limit语句

select * from employee order by id limit 4;

2、impala当中的数据表导入几种方式

第一种方式,通过load hdfs的数据到impala当中去

create table user(id int ,name string,age int ) row format delimited fields terminated by "\t";

准备数据user.txt并上传到hdfs的 /user/impala路径下去

上传user.txt到hadoop上去:

hdfs dfs -put user.txt /user/impala/

查看是否上传成功:

hdfs dfs -ls /user/impala
1       kasha   15
2       fizz        20
3       pheonux    30
4       manzi  50

加载数据

load data inpath '/user/impala/' into table user;

查询加载的数据

select  *  from  user;

如果查询不不到数据,那么需要刷新一遍数据表

refresh  user;

第二种方式:

create  table  user2   as   select * from  user;

第三种方式:

insert  into  #不推荐使用 因为会产生大量的小文件

千万不要把impala当做一个数据库来使用

第四种方式:

insert  into  select  #用的比较多

原文地址:https://www.cnblogs.com/-xiaoyu-/p/11186672.html

时间: 2024-10-07 15:35:23

第二章 impala基础使用的相关文章

第二章 算法基础 思考题2-1

package chap02; import static org.junit.Assert.*; import java.util.Arrays; import java.util.Random; import org.junit.Test; /*** * 在归并排序中对小数组采用插入排序 * * @author xiaojintao * */ public class ques2_1 { /** * 归并排序算法 * * @param a * @return */ static void m

第二章 算法基础 思考题2-4(逆序对)

1 package chap02; 2 3 import static org.junit.Assert.*; 4 5 import java.util.Arrays; 6 7 import org.junit.Test; 8 9 public class ques2_4 { 10 /** 11 * 逆序对,将一个序列中的所有逆序对打印输出 12 * 13 * @author xiaojintao 14 * 15 */ 16 static void printReverseOrder(int[]

鸟哥的 Linux 私房菜(服务器) 第二章 网络基础概念

鸟哥的 Linux 私房菜(服务器) @(学习笔记)[Linux|Markdown|笔记] [TOC] 第二章 网络基础概念 2.1 网络是个什么玩意儿 OSI 七层协定 分层 负责内容 Layer 1物理层Physical Layer 由于网络媒体只能传送 0 与 1 这种位串,因此物理层必须定义所使用的媒体设备之电压与讯号等, 同时还必须了解数据讯框转成位串的编码方式,最后连接实体媒体并传送/接收位串. Layer 2数据链结层Data-Link Layer 这一层是比较特殊的一个阶层,因为

2016.9.21 鸟哥私房菜服务器篇-第二章网络基础-总结

第二章-网络的基本概念 2.1网络 操作系统很多,比如windows/linux/os X等,这么多的操作系统(不同国家的人)如何进行网络沟通(语言交流)呢? 制定共同的标准.然后在你的系统里提供可以加入该标准的程序代码. 网络是跨平台的. 2.1.1 什么是网络 网络就是几部计算机主机或者网络打印机之类的接口设备,通过网线或者无线网络技术,将这些主机与设备连接起来,使得数据可以通过网络介质(网线或者网卡等硬件)来传输的一种方式. 以太网已经是一项公认的标准接口了,大家可以依据这个标准来开发自己

第二章 寄存器基础概念

第二章 寄存器 1.一个典型的CPU由运算器,控制器,寄存器等器件组成. 内部总线实现CPU内部各个器件之间的联系. 外部总线实现CPU和主板上其它器件的联系. 2.8086是Intel系列中16位微处理器,地址总线20位. 8086有14个16位寄存器:AX,BX,CX,DX,是通用寄存器SI,DI,BP,SP,是基址和变址寄存器CS,SS,DS,ES,是段寄存器IP,FLAGS是指令指针和标志寄存器. 3.通用寄存器:一个CPU有多个寄存器,用来存放十六位一般性数据 下面以AX为例 4.汇编

第二章 Python基础知识

第1章 第一个Pyhton程序 Pyhton的两种执行方式:交互式与脚本文件 1.1 交互式 l  交互式模式 直接在Windows或者Linux环境下打开Python解释器执行. 优点:快捷,调试方便. 缺点:不能够保存代码. C:\Users\cc>python3 Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", &quo

第二章 Scorpio-CSharp基础语法介绍 语法篇

1. if 1 var a = 300 3 if (a == 100) { 5 print(100) 7 } else if (a == 200) { 9 print(200) 11 } elif (a == 300) { 13 print(300) 15 } elseif (a == 400) { 17 print(400) 19 } else { 21 print(0) 23 } else if(有空格) 和 elif 和 elseif(无空格)  三种写法都可以使用,都当作 else if

第二章python基础续

2.6基本数据类型--列表 列表的创建 list_test=['张三','李四','alex'] #或 list_test=list('alex') #或 list_test=list(['张三','李四','alex']) 列表的特点和常用操作 特性: 1.可存放多个值 2.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序 3.可修改指定索引位置对应的值,可变 常规操作: #索引 >>> l = ['egon','alex','seven','yuan'] >>&

《SQL 基础教程》第二章:查询基础

这一章的结构如下: SELECT 语句基础 算术运算符和比较运算符 逻辑运算符 SELECT 语句可用于查询数据,并且可以设定条件来查询具有特定值的记录.条件的设定就需要算数运算符.比较运算符和逻辑运算符发挥作用. SELECT 语句基础 格式 SELECT <column1>, <column2>, <column3>...FROM <table>; 注意:SELECT 语句后面的对象既可以是列名,也可以是相关的算术表达式. AS 关键字 功能:利用 AS