您的位置:首页 > 其它

006-impala 数据处理&impala 和 HBase整合&JDBC方式访问Impala

2015-10-12 16:19 525 查看
一、数据文件处理

加载数据:

1、insert语句:插入数据时每条数据产生一个数据文件,不建议用此方式加载批量数据

2、load data方式:再进行批量插入时使用这种方式比较合适

3、来自中间表:此种方式使用于从一个小文件较多的大表中读取文件并写入新的表生产少量的数据文件。也可以通过此种方式进行格式转换。

空值处理:

impala将“\n”表示为NULL,在结合sqoop使用是注意做相应的空字段过滤,

也可以使用以下方式进行处理:

alter table name set tblproperties (“serialization.null.format”=“null”)

二、Impala可以通过Hive外部表方式和HBase进行整合

步骤如下:

步骤1:创建hbase 表,向表中添加数据

create 'test_info', 'info'

put 'test_info','1','info:name','zhangsan’

put 'test_info','2','info:name','lisi'

步骤2:创建hive表

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");

步骤3:刷新Impala表

invalidate metadata

参考文章: http://shiyanjun.cn/archives/526.html

三、Impala JDBC 访问

配置:

impala.driver=org.apache.hive.jdbc.HiveDriver

impala.url=jdbc:hive2://119.90.51.196:21050/;auth=noSasl

impala.username=

impala.password=

提示:

尽量使用PreparedStatement执行SQL语句,原因如下:

1.性能上PreparedStatement要好于Statement

2.Statement存在查询不出数据的情况

package impala;

import java.sql.Connection;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *
 * @author shenfl
 *
 */
public class TestJDBC {
    public static void main(String[] args) throws Exception {
        Class.forName("org.apache.hive.jdbc.HiveDriver");
        Connection conn = DriverManager.getConnection("jdbc:hive2://119.90.51.195:21050/;auth=noSasl","" ,"" );
        PreparedStatement pstm = conn.prepareStatement("select count(*) from impala.bigdata limit 1");
        ResultSet rs = pstm .executeQuery();
        while(rs .next()){
            System. out.println(rs .getString(1));
        }
        rs.close();
        pstm.close();
        conn.close();
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: