1. impala(官网)
- 实时交互SQL大数据查询工具
- 它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。
- Impala的最大特点也是最大卖点就是它的快速。
- Impala完全抛弃了Hive+MapReduce这个不太适合做SQL查询的缓慢范式
- 通过使用与商用并行关系数据库中类似的分布式查询引擎,可以直接从HDFS或HBase中用SELECT、JOIN和统计函数查询数据,从而大大降低了延迟
2. Hive 与 impala
- Impala与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面
- 但从客户端使用来看Impala与Hive有很多的共同之处,如数据表元数据、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池、用户界面(Hue Beeswax)等。
- Hive适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询
可以先使用hive进行数据转换处理,之后使用Impala在Hive处理后的结果数据集上进行快速的数据分析。
3. impala 和hive 语法和数据基本相通
1)invalidate metadata;
可以把hive元数据(数据)刷新同步过来
3)impala的jdbc接口
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class UpdateMeta { static String JDBC_DRIVER = "com.cloudera.impala.jdbc41.Driver"; static String CONNECTION_URL = "jdbc:impala://192.168.0.22:21050/db_1"; ### jdbc:impala://域名/数据库 public static void main(String[] args) { Connection con = null; ResultSet rs = null; PreparedStatement ps = null; try { Class.forName(JDBC_DRIVER); con = DriverManager.getConnection(CONNECTION_URL); ps = con.prepareStatement("select max(dtime),count(dtime) from achi"); rs = ps.executeQuery(); while (rs.next()) { System.out.println(rs.getString(1) + '\t' + rs.getLong(2)); } } catch (Exception e) { e.printStackTrace(); } finally { //关闭rs、ps和con } } }
4 CDH
hadoop是一个开源项目,所以很多公司在这个基础进行商业化,Cloudera对hadoop做了相应的改变
Cloudera公司的发行版,我们将该版本称为CDH(Cloudera Distribution Hadoop)
5. kudu
- 列式存储引擎
- 更多详情参考
6. parquet 表
1)面向分析型业务的列式存储格式;既可以支持关系型数据,也可以支持嵌套的数据类型
2)列式存储的优点
- 可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量。
- 压缩编码 可以降低磁盘存储空间。由于同一列的数据类型是一样的,可以使用更高效的压缩编码(例如Run Length Encoding和Delta Encoding)进一步节约存储空间。
- 只读取需要的列,支持向量运算,能够获取更好的扫描性能。
3)parquet表的insert之前要设置 set hive.merge.mapfiles=false;
如果它的输入包含不止一个mapreduce,比如join/group by/distinct,要建一个RCF的中转表,然后再select into
6. hive的三种常用存储格式
Hive的三种文件格式:TEXTFILE、SEQUENCEFILE、RCFILE
- TEXTFILE和SEQUENCEFILE的存储格式都是基于行存储的
- RCFILE是基于行列混合的思想,先按行把数据划分成N个row group,在row group中对每个列分别进行存储。
- 详细查看
每天进步一点点