如何判断hive的远程服务接口已经打开

发布网友 发布时间:2022-04-26 17:18

我来回答

3个回答

懂视网 时间:2022-04-07 20:38

1、hive开放jdbc接口,开发需要导入jar如下

commons-logging-1.0.4.jar
hadoop-common-2.6.0.jar
hive_exec.jar
hive_jdbc.jar
hive_metastore.jar
hive_service.jar
httpclient-4.2.5.jar
httpcore-4.2.5.jar
libfb303.jar
log4j-1.2.16.jar
slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar

2、开发的实例程序如下

package com.gw;

import java.io.InputStream;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import org.apache.log4j.Logger;

/**
 * @author wangweifeng
 * @description:通过jdbc连接到hive实现如下操作:建表、删表、对表进行描述、 从本地文件系统导入数据、执行查询
 *
 */

public class HiveJdbcClient {

    public static Statement jdbcStatemt;
    private static ResultSet res = null;
    private static final Logger log = Logger.getLogger(HiveJdbcClient.class);

    // 采用单例模式创建一个jdbcstatemt
    public static Statement getJdbcStatemt() throws Exception {
        if (jdbcStatemt == null) {
            Properties prop = new Properties();
            URL url = Thread.currentThread().getContextClassLoader()
                    .getResource("config.properties");
            InputStream in = url.openStream();
            prop.load(in);
            String driverName = prop.getProperty("driverName");
            String jdbcUrl = prop.getProperty("jdbcUrl");
            String userName = prop.getProperty("userName");
            String password = prop.getProperty("password");
            // 1、使用CLASS 类加载驱动程序
            Class.forName(driverName);
            // 2、连接数据库
            Connection con = DriverManager.getConnection(jdbcUrl, userName,
                    password);
            // 3、Statement 接口需要通过Connection 接口进行实例化操作
            jdbcStatemt = con.createStatement();
        }
        return jdbcStatemt;
    }

    // 关闭jdbc连接
    public static void closeStatement() throws Exception {
        if (!jdbcStatemt.isClosed()) {
            jdbcStatemt.close();
        }
    }

    public static void main(String[] args) {

        try {
            jdbcStatemt = getJdbcStatemt();
        } catch (Exception e) {
            e.printStackTrace();
        }
        String Hql = "";
        /* String tableName = "DemiClass"; */
        /* String tableName = "DemiDate"; */
        /* String tableName = "DemiDept"; */
        String tableName = "tXsXsMxFactA";
        String rowTerminated = " ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,‘ ";
        String lineTerminated = " LINES TERMINATED BY ‘ ‘ ";

        // 1、删除表
        Hql = "DROP TABLE IF EXISTS " + tableName;
        try {
            jdbcStatemt.execute(Hql);
            System.out.println("表删除成功!");
        } catch (SQLException e1) {
            System.out.println("表删除失败!");
            e1.printStackTrace();
        }

        // 2、创建表
        /*
         * Hql = "CREATE EXTERNAL TABLE " + tableName +
         * "(clscode STRING,cty_big STRING,cty_sml STRING)  " + rowTerminated +
         * lineTerminated;
         */

        /*
         * Hql = "CREATE EXTERNAL TABLE " + tableName +
         * "(XSDATE STRING,YEAR STRING,MONTH STRING,DAY STRING) " +
         * rowTerminated + lineTerminated;
         */

        /*
         * Hql = "CREATE EXTERNAL TABLE " + tableName +
         * "(DEPCODE STRING,BRANCH_NAM STRING,GROUP_NAME STRING,DEPNAME STRING) "
         * + rowTerminated + lineTerminated;
         */

        Hql = "CREATE EXTERNAL TABLE "
                + tableName
                + "(CLSCODE STRING,DEPCODE STRING,XSDATE STRING,JXCOUNT INT,DXCOUNT INT,LXCOUNT INT,JXTOTAL DOUBLE,DXTOTAL DOUBLE,LXTOTAL DOUBLE) "
                + rowTerminated + lineTerminated;

        try {
            jdbcStatemt.execute(Hql);
            System.out.println("表创建成功!");
        } catch (SQLException e) {
            System.out.println("表创建失败!");
            e.printStackTrace();
        }

        // 3、执行“show tables”操作
        Hql = " SHOW TABLES ‘" + tableName + "‘";
        System.out.println("Running:" + Hql);
        try {
            res = jdbcStatemt.executeQuery(Hql);
            if (res.next()) {
                System.out.println(res.getString(1));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        // 4、执行“describe table”操作
        Hql = " DESCRIBE " + tableName;
        System.out.println("Running:" + Hql);
        try {
            res = jdbcStatemt.executeQuery(Hql);
            System.out.println("执行" + Hql + " 运行结果:");
            while (res.next()) {
                System.out.println(res.getString(1) + " " + res.getString(2));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        // 5、执行“load data into table”操作
        /*
         * String filePath =
         * "/home/Hadoop/Desktop/createTable_And_Data/DemiClass.csv"; Hql =
         * "LOAD DATA LOCAL INPATH ‘" + filePath +
         * "‘ OVERWRITE INTO TABLE DemiClass";
         */

        /*
         * String filePath =
         * "/home/Hadoop/Desktop/createTable_And_Data/DemiDate.csv"; Hql =
         * "LOAD DATA LOCAL INPATH ‘" + filePath+
         * "‘ OVERWRITE INTO TABLE DemiDate";
         */

        /*
         * String filePath =
         * "/home/Hadoop/Desktop/createTable_And_Data/DemiDept.csv"; Hql =
         * "LOAD DATA LOCAL INPATH ‘" + filePath+
         * "‘ OVERWRITE INTO TABLE DemiDept";
         */

        String filePath = "/home/Hadoop/Desktop/createTable_And_Data/tXsXsMxFactA.csv";
        Hql = "LOAD DATA LOCAL INPATH ‘" + filePath
                + "‘ OVERWRITE INTO TABLE tXsXsMxFactA";

        System.out.println("Running:" + Hql);
        try {
            jdbcStatemt.executeQuery(Hql);
            System.out.println("数据导入成功!");
        } catch (Exception SQLException) {
            System.out.println("bug!");
        }

        // 6、执行“select * query”操作
        // 执行“select * query”操作

        Hql = "SELECT * FROM " + tableName;
        System.out.println("Running:" + Hql);
        try {
            res = jdbcStatemt.executeQuery(Hql);
            System.out.println("执行“select * query”运行结果:");
            while (res.next()) {

                /*
                 * System.out.println(res.getInt(1) + " " + res.getString(2) +
                 * " " + res.getString(3));
                 */

                /*
                 * System.out.println(res.getString(1) + " " + res.getString(2)
                 * + " " + res.getString(3) + " " + res.getString(4));
                 */

                System.out.println(res.getString(1) + " " + res.getString(2)
                        + " " + res.getString(3) + " " + res.getInt(4) + " "
                        + res.getInt(5) + " " + res.getInt(6) + " "
                        + res.getDouble(7) + " " + res.getDouble(8) + " "
                        + res.getDouble(9) + " ");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        // 7、执行一个连接操作,查找某一天,某个部门,
        Hql = " select dd.XSDATE ,ddp.BRANCH_NAM, dc.CTY_BIG, fac.DXCOUNT, fac.DXTOTAL from tXsXsMxFactA fac join DemiClass dc on (fac.CLSCODE = dc.CLSCODE)"
                + "join DemiDate dd on (fac.XSDATE = dd.XSDATE) join DemiDept ddp on (fac.DEPCODE = ddp.DEPCODE) WHERE dd.XSDATE BETWEEN ‘2004-04-27‘ AND ‘2004-05-20‘";
        try {
            res = jdbcStatemt.executeQuery(Hql);
            while (res.next()) {
                System.out.println(res.getString(1) + " " + res.getString(2)
                        + " " + res.getString(3) + " " + res.getInt(4) + " "
                        + res.getDouble(5));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            closeStatement();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

Hive中jdbc接口

标签:

热心网友 时间:2022-04-07 17:46

1、hive 命令行模式,直接输入/hive/bin/hive的执行程序,或者输入 hive --service cli
用于linux平台命令行查询,查询语句基本跟mysql查询语句类似
2、 hive web界面的 (端口号9999) 启动方式
hive –service hwi &
用于通过浏览器来访问hive,感觉没多大用途
3、 hive 远程服务 (端口号10000) 启动方式
hive --service hiveserver &
或者
hive --service hiveserver 10000>/dev/null 2>/dev/null &
备注:
连接Hive JDBC URL:jdbc:hive://192.168.6.116:10000/default (Hive默认端口:10000 默认数据库名:default)

热心网友 时间:2022-04-07 19:04

连接Hive JDBC URL:jdbc:hive://192.168.6.116:10000/default (Hive默认端口:10000 默认数据库名:default)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com