impala使用

目录

a. 添加 impala 服务

b. impala客户端启动

c. 创建表 

d. impala进行 mapreduce 计算 

e. 分区使用

f. impala数据同步

 1.使用hive插入数据

2.impala查询数据 

3.进行数据同步 

g. impala参数

h. impala不支持的的特性

h. impala空值 NULL

 i. impala 整合 hbase 数据库

 j. impala 优化


a. 添加 impala 服务

 Kudu是Hadoop生态系统中一个真正的列存储。

在进行继续的时候,由于在安装 impala 的时候,会导致集群中所有的服务进行重启,所以这里的下一步会执行失败,但是没有关系,因为 安装 impala 的配置文件已经在 节点上配置成功,执行失败也可以回到主页,然后手动的对各个服务进行重启,没有问题的。

在回到主页的时候,hdfs 服务会显示配置过期,这个时候需要进行重启(不要勾选重新部署客户端),重启的时候可能会重启失败(重启完服务依然不能正常使用)多尝试几次就可以了,由于是使用的虚拟机,并且物理机的内存也不够用,导致系统很卡,恢复正常的时间比较长,好几个小时,我这个集群才反应过来。

可以看到集群中分配的内存全部用完,并且发生内存交换,多点耐心,多尝试几次重启,(如果在安装impala之前的服务都运行正常)那最终就会变得正常。 

b. impala客户端启动

c. 创建表 

在 impala 客户端创建表, hive 端可以实时看到表

d. impala进行 mapreduce 计算 

hive在执行 MapReduce 操作的时候,导致集群环境运行异常,无法正常使用

我这里要做的内容是,对比一下 impala 和 hive 在执行 MapReduce 任务的耗时(impala是完全基于内存的,所以执行的速度比较快),看来是没有办法实验了。

select count(*) name from student;

在使用impala 进行查询的时候速度非常快(第一次进行MapReduce计算的时候可能会有点慢,因为系统需要加载表的资源,后面再次进行计算的时候资源已经位于内存中了,计算的速度就比较快了)

在shell会话中,

-B 表示将查询的数据去格式化(只显示表中的数据,不显示字段信息),

-q 表示执行完命令后,不进入 impala-shell 的会话

>  表示将查询的内容追加到  impalaStudent 文件中 ,

impala-shell -B -q "select * from student;" > impalaStudent

查询结果不去格式化(正常输出) 

impala-shell -q "select * from student;" > impalaStudent

e. 分区使用

创建表

-- 创建表
create table psnpartition(
	id int, 
	name string, 
	aget int)
	partitioned by(type string);

-- 增加分区
alter table psnpartition add partition(sex='boss');

-- 添加数据
insert into psnpartition partition(type='boss') values
	(1, 'xiaozhang',18),
	(2, 'xiaoli',23);
	
insert into psnpartition partition(type='coder') values
	(3, 'daming',20),
	(4, 'erming',21);
	
insert into psnpartition partition(type='coder') values
	(3, 'tangsan',22),
	(4, 'xiaowu',23);

在使用 insert into 进行插入数据的时候,每执行一次该命令,就会产生一个hdfs 文件,这样会造成文件系统中小文件太多,影响系统的效率。 

使用 clouderaManager 进行服务的安装之后,hdfs 文件系统会产生权限的认证,通过直接访问9870 端口,是无法正常的查看文件的。

查询数据

select * from psnpartition where type='coder' and name='tangsan';

f. impala数据同步

refresh  tableName 刷新指定表的元数据,将表新增的元数据新加载到内存(增量刷新)

invalidate metadata 默认将全部的表的元数据进行刷新

 invalidate metadatarefresh
语法INVALIDATE METADATA [[db_name.]table_name]REFRESH [table] PARTITION [partition]
执行方式异步同步
操作重量级轻量级(速度快)
使用场景表的schema改变表数据改变(增,删,重命名)
表的数据实际上是文件(增,删,重命名)是针对数据文件

 1.使用hive插入数据

通过 hive 进行数据的插入,显示没有权限对数据文件进行修改

load data local inpath '/root/psnpartitiondate' into table psnpartition partition (type='coder');

psnpartitiondate 文件的数据

5 pangzi 24
6 zhuqing 25

修改 hdfs 中 /user/hive 文件夹的权限

sudo -uhdfs hdfs dfs -chmod -R 777 /user/hive/

这个时候,通过 hive 会话查询,可以查到数据,由于在建表的时候,没有指定数据字段的解析方式,导致查询的时候识别不出来(同时验证 hive 读检查) 

2.impala查询数据 

通过 impala 会话查询数据,发现没有新增加的两条数据。 

3.进行数据同步 

refresh  tableName 刷新指定表的元数据,将表新增的元数据新加载到内存(增量刷新)

操作是同步的,命令执行完数据就完成了刷新

REFRESH [table] PARTITION [partition]

refresh psnpartition;

invalidate metadata 默认将全部的表的元数据进行刷新

操作是异步的,虽然命令执行完了,但是后台仍然在执行数据的同步

INVALIDATE   METADATA   [[db_name.]table_name]

是用于刷新全库或者某个表的元数据,包括表的元数据和表内的文件数据,它会首先清除表的缓存,然后从metastore中重新加载全部数据并缓存,该操作代价比较重,主要用于在hive中修改了表的元数据,例如create table/drop table/alter table add columns等,即改变的表的结构。

invalidate metadata psnpartition;

 

g. impala参数

-V 参数可以看到命令执行的详细内容

impala-shell -V

h. impala不支持的的特性

impala 是 hive 的子集,impala的唯一的优点是,完全基于内存计算速度比较快,同时 impala 要求的硬件尤其是内存比较高

h. impala空值 NULL

 

 

 i. impala 整合 hbase 数据库

在 hive 上面创建的是 外部表,hive 和 impala 是无缝连的,现在将 hive 与 hbase 进行整合后,间接的相当于 impala 和 hbase 数据库是连接起来的

CREATE EXTERNAL TABLE test_info (key string, name string)
   ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'
   STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
   WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key,info:name")
   TBLPROPERTIES 
   ("hbase.table.name"="test_info");

 j. impala 优化

 

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值