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

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) {
            }
        }
    }

 

你可能感兴趣的:(Hbase,hive)