zoukankan      html  css  js  c++  java
  • 使用hive客户端java api读写hive集群上的信息

    上文介绍了hdfs集群信息的读取方式,本文说hive

    1、先解决依赖

    <properties>
            <hive.version>1.2.1</hive.version>
        </properties>
    <dependency>
                <groupId>org.apache.hive</groupId>
                <artifactId>hive-exec</artifactId>
                <version>${hive.version}</version>
                <scope>provided</scope>
            </dependency>

    2、配置文件

    这里我们给出一种简单的配置方法,就是直接将hive-site.xml通过添加文件的方式加载到配置

    例如,hive-site.xml中的配置如下

    <configuration>
        <property>
            <name>hive.metastore.uris</name>
            <value>thrift://10.91.64.23:9083,thrift://10.91.64.23:9083,thrift://10.91.64.23:9083</value>
        </property>
    </configuration>

    3、hive client api

    说明:

    1、hiveConf.addResource("hive-site.xml") 可以直接把配置文件加载到配置

    2、hive的api很丰富,下面只介绍了其中一部分,如果用到其他再进行封装即可

    package com.xiaoju.dqa.prometheus.client.hive;
    
    
    import org.apache.hadoop.hive.conf.HiveConf;
    import org.apache.hadoop.hive.metastore.IMetaStoreClient;
    import org.apache.hadoop.hive.metastore.RetryingMetaStoreClient;
    import org.apache.hadoop.hive.metastore.api.Database;
    import org.apache.hadoop.hive.metastore.api.FieldSchema;
    import org.apache.hadoop.hive.metastore.api.MetaException;
    import org.apache.thrift.TException;
    import org.slf4j.Logger;
    
    import java.util.List;
    
    public class HiveClient {
        protected final Logger logger = org.slf4j.LoggerFactory.getLogger(this.getClass());
        IMetaStoreClient client;
    
        public HiveClient() {
            try {
                HiveConf hiveConf = new HiveConf();
                hiveConf.addResource("hive-site.xml");
                client = RetryingMetaStoreClient.getProxy(hiveConf);
            } catch (MetaException ex) {
                logger.error(ex.getMessage());
            }
        }
    
        public List<String> getAllDatabases() {
            List<String> databases = null;
            try {
                databases = client.getAllDatabases();
            } catch (TException ex) {
                logger.error(ex.getMessage());
            }
            return databases;
        }
    
        public Database getDatabase(String db) {
            Database database = null;
            try {
                database = client.getDatabase(db);
            } catch (TException ex) {
                logger.error(ex.getMessage());
            }
            return database;
        }
    
        public List<FieldSchema> getSchema(String db, String table) {
            List<FieldSchema> schema = null;
            try {
                schema = client.getSchema(db, table);
            } catch (TException ex) {
                logger.error(ex.getMessage());
            }
            return schema;
        }
    
        public List<String> getAllTables(String db) {
            List<String> tables = null;
            try {
                tables = client.getAllTables(db);
            } catch (TException ex) {
                logger.error(ex.getMessage());
            }
            return tables;
        }
    
        public String getLocation(String db, String table) {
            String location = null;
            try {
                location = client.getTable(db, table).getSd().getLocation();
            }catch (TException ex) {
                logger.error(ex.getMessage());
            }
            return location;
        }
    
    }
  • 相关阅读:
    空间分析之距离分析(转)
    空间分析之常用工具(转)
    空间分析之表面分析(转)
    关于高斯克吕格平面直角坐标系(转)
    空间分析之水文分析(转)
    空间分析之区域分析(转载)
    Cass和ArcGIS交换
    0x80029C4A
    delete
    中国期货业协会会员,2016年期货公司分类评级结果
  • 原文地址:https://www.cnblogs.com/kangoroo/p/7221548.html
Copyright © 2011-2022 走看看