CHD的impala实现hive和hbase数据查询

本文介绍在CDH环境下使用Impala进行SQL查询的实践过程,包括创建外部表映射HBase,以及通过JDBC进行连接查询的具体步骤。

cdh版本安装spark-sql比较复杂,cdh主推impala,可以方便进行查询

启动命令:impala-shell 

可以直接进行hive操作。

 

impala查询hbase,需要进行映射

CREATE EXTERNAL TABLE tiger.test_info(--指定库名和表名
     user_id string, --字段
     user_type tinyint,--字段
     gender string,--字段
     birthday 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:user_type, info:gender, info:birthday")--映射关系,主键以及其他字段
TBLPROPERTIES("hbase.table.name" = "test_info");--指定hbase表名

然后在impala执行,INVALIDATE METADATA;同步元数据,即可进行查询。

 

impala jdbc:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ImpalaJDBC {

    private static final String SQL_STATEMENT = "SELECT * FROM tiger.test_info ";
    private static final String IMPALAD_HOST = "172.**.**.**";
    private static final String IMPALAD_JDBC_PORT = "21050";
    private static final String CONNECTION_URL = "jdbc:hive2://" + IMPALAD_HOST + ':' + IMPALAD_JDBC_PORT + "/;auth=noSasl";
    private static final String JDBC_DRIVER_NAME = "org.apache.hive.jdbc.HiveDriver";

    public static void main(String[] args) {
        System.out.println("Cloudera Impala JDBC Example");
        System.out.println("Using Connection URL: " + CONNECTION_URL);
        System.out.println("Running Query: " + SQL_STATEMENT);

        Connection con = null;

        try {

            Class.forName(JDBC_DRIVER_NAME);
            con = DriverManager.getConnection(CONNECTION_URL,"liupeijin","");--用户名
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(SQL_STATEMENT);
            System.out.println("Begin Query Results");
            while (rs.next()) {
                System.out.println(rs.getString(1));
            }

            System.out.println("End Query Results");

        } catch (SQLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                con.close();
            } catch (Exception e) {
            }
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值