配置

hive各组件配置连接数与内存,连接数关系

image-20201119104447069

hs2启动,停止和连接hs2的几种方式

启动停止

启动 HiveServer2:sudo service hive-server2 start

停止 HiveServer2:sudo service hive-server2 stop

beeline连接方式

在终端可以使用beeline的客户端方式去连接hiveserver2如下所示

  1. $ /usr/lib/hive/bin/beeline
  2. beeline> !connect jdbc:hive2://localhost:10000 username password org.apache.hive.jdbc.HiveDriver
  3. 0: jdbc:hive2://localhost:10000> SHOW TABLES;
  4. show tables;
  5. +-----------+
  6. | tab_name |
  7. +-----------+
  8. +-----------+
  9. No rows selected (0.238 seconds)
  10. 0: jdbc:hive2://localhost:10000>

如果服务里面有TLS/SSL的相关配置,beenline方式如下

  1. jdbc:hive2://#<host>:#<port>/#<dbName>;ssl=true;sslTrustStore=#<ssl_truststore_path>;trustStorePassword=#<truststore_password>;#<otherSessionConfs>?#<hiveConfs>#<hiveVars>

具体示例

  1. $ beeline
  2. beeline> !connect jdbc:hive2://<host>:8443/;ssl=true;transportMode=http;httpPath=gateway/cdp-proxy-api/hive;sslTrustStore=/<path>/bin/certs/gateway-client-trust.jks;trustStorePassword=changeit

使用带有hbase的hive

在hbase中创建表后,我们只能在hbase shell中使用scan查询数据,这对于熟悉SQL的使用者不怎么习惯,不过我们可以在hive中创建外部表来访问hbase表中的数据,例子如下:

这里hbase中的表oss_user_label_action_data已经存在

创建外部表

  1. CREATE EXTERNAL TABLE hive_oss_user_label_action_data(
  2. key string,
  3. monthno string,
  4. usernumber string,
  5. labelno string,
  6. labelvalue string,
  7. provcode string,
  8. areacode string,
  9. cardtype string,
  10. extstring string,
  11. createtime string,
  12. modifytime string
  13. )
  14. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
  15. WITH SERDEPROPERTIES
  16. ("hbase.columns.mapping" =
  17. ":key,info:monthno,info:usernumber,info:labelno,info:labelvalue,info:provcode,info:areacode,info:cardtype,info:extstring,info:createtime,info:modifytime")
  18. TBLPROPERTIES("hbase.table.name" = "oss_user_label_action_data");

通过hive查询数据

根据rowkey查询 select * from hive_oss_user_label_action_data where key='201407|31130101|8613500000001'

根据某个字段查询 select * from hive_oss_user_label_action_data where usernumber='8613500000001'

组合查询 select * from hive_oss_user_label_action_data where usernumber='8613500000001' and labelno='31130101'

说明: 这里我们访问的hive_oss_user_label_action_data表是虚表,数据是存储在hbase中的,我们可以创建另外一个hive中的表。

将hbase中的数据加载到hive本地

创建另外一个表

  1. CREATE TABLE hive_oss_user_label_action_data_local(
  2. key string,
  3. monthno string,
  4. usernumber string,
  5. labelno string,
  6. labelvalue string,
  7. provcode string,
  8. areacode string,
  9. cardtype string,
  10. extstring string,
  11. createtime string,
  12. modifytime string
  13. )
  14. ROW FORMAT DELIMITED
  15. FIELDS TERMINATED BY '\t'
  16. STORED AS TEXTFILE;

将hbase中的表数据加载到本地表

INSERT OVERWRITE TABLE hive_oss_user_label_action_data_local SELECT * FROM hive_oss_user_label_action_data;