Inceptor
Inceptor是一种交互式分析引擎,本质是一种SQL翻译器。Inceptor中一共可以操作五种类型的表结构:
-
普通文本表(TXT表)
-
普通表导入数据
-
创建HDFS数据目录,在本地创建一个存放数据的文件夹,为了区分不同用户和不同数据源,建立以下两个目录
-
hadoop fs -mkdir -p /user/user1/data/inceptor hadoop fs -mkdir -p /user/user1/data/hyperbase
-
首先将本地path存放的数据文件put到HDFS目录中,数据可以存放在集群中的任意一台机器中(注意本步操作可能会报load数据没有权限,HDFS上的数据和表的权限不一致 使用:(sudo -u hdfs hadoop fs -chown -R hive /user/*)命令进行owner的修改,hive为owner名字)或者使用sudo -u hdfs hadoop fs -chmod -R 777 /user/*
-
hadoop fs -put <path>/data.txt /user/user1/data/inceptor
-
-
将上传进HDFS的文件load到Inceptor事先建立好的s3表中,在Inceptor中输入如下命令:
-
load data inpath ‘/user/user1/data/inceptor/data.txt’ into table s3;
-
从其他表导,入注意不复制数据
-
create table t4 like t3;
-
-
-
-
分区表(分单值分区和范围分区)
-
创建单值分区表(每创建一个单值分区表就会产生一个小文件,这里只有一个name值)
-
create table single_tbl(name string) partitioned by(level string)
-
-
-
分桶表
-
必须创建外表,只支持从外表导入数据,在分桶表中经常做聚合和join操作,速度非常快。另外分桶规则主要分为
- int型,按照数值取模,分几个桶就模几
- string型,按照hash表来分桶
-
创建分桶表bucket_tbl(这里分桶的大小是用表的总数据大小除以200M,经实际优化测试,每个桶的数据为200M处理速度最优)
-
create external table bucket_info(id int, name string)row format delimited fields terminated by ',' location '/user/datadir';
-
-
-
holodesk表
- holodesk表既可以基于内存也可以基于ssd存储和查询,holodesk会存两份,一份存在内存或者ssd中,一份存在HDFS中,这样可能在查询的性能上有所延迟
- holodesk最擅长处理groupby的SQL查询语句
- “cache”=“cache_medium"指定计算缓存的介质。可以选择ram,SSD和memeory三种。只有当服务器上配置有SSD时,才可以选择SSD作为缓存,Inceptor会自动利用SSD为计算加速。”
-
ORC表(Hive ORC格式)
-
建立ORC格式表
-
create table country(id int,country string)stored as orc;
-
create external table ex_tbl(id int,country string) row format delimited fields terminated by ',' stored as textfile location '/user/tdh/externaltbl';
-
insert into country select * from ex_tbl;
-
-
-
ORC事务表(可进行增删改查操作,必须建立分桶表和外表,且两个表的表格式要和源数据字段一一对应起来)
- 建立ORC格式事务表,必须要分桶,既可以单值插入,又可以通过外表插入
注意事项:
- HDFS不能直接load到Inceptor中的ORC事务表中,(只能load到普通表和ORC表中)要想在ORC事务表里插入数据有两种方法:
- a.建立一张外表,再将HDFS load进外表上,再insert into select * from external table
- b.由于ORC事务表支持增删改查,也可以使用单值插入语句insert into table country values(101,japan)
- 查看分区表的命令是show partitions [table名]
- 查看每个表的创建时语句命令是show create table [table名]
- 使用命令hdfs dfs -ls /user/country(或者使用hadoop fs -ls /user/country命令)
- 默认数据库存放位置 hdfs://nameservice/inceptorsql1/user/hive/warehouse/ 在Inceptor创建数据库时一般使用它的default默认数据库,若自己建立数据库请不要指定location,还有自己建立的数据库可能会因为权限不够而造成一些操作失败报错。可以使用hadoop fs -ls