HiveJDBC详细解析

一、hivejdbc下载

HiveJDBC是实现Hive与JDBC的接口,可以方便地连接Hive并执行SQL语句。在使用HiveJDBC前,需要先下载对应版本的JDBC驱动程序,可以从Hive官网上下载。比如,下载版本为3.1.0的HiveJDBC驱动程序:

curl -LO https://repo1.maven.org/maven2/org/apache/hive/hive-jdbc/3.1.0/hive-jdbc-3.1.0-standalone.jar

二、hivejdbc连接默认超时

HiveJDBC连接默认超时时间为30秒,如果连接超时,则会抛出TTransportException异常。可以通过以下方法设置连接超时时间:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class HiveJdbcExample {
  public static void main(String[] args) throws SQLException {
    //连接字符串
    String url = "jdbc:hive2://:/";
    Properties props = new Properties();
    //设置连接超时时间为60秒
    props.setProperty("hs2.connection.timeout", "60");
    //获取连接
    Connection conn = DriverManager.getConnection(url, props);
  }
}

三、hivejdbc超时不断开

默认情况下,HiveJDBC连接超时后会断开连接,可以通过以下方法设置超时后不断开连接:

//设置超时后不断开连接
props.setProperty("hs2.server.no.retries", "true");

四、jdbc连接

HiveJDBC实现了JDBC接口,可以通过JDBC方式连接Hive,并执行SQL语句。以下是连接示例:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class HiveJdbcExample {
  public static void main(String[] args) throws SQLException {
    //连接字符串
    String url = "jdbc:hive2://:/";
    //获取连接
    Connection conn = DriverManager.getConnection(url);
  }
}

五、hivejdbc长时间获取不到连接

使用HiveJDBC连接池时,如果长时间获取不到连接,则会抛出SQLException异常。可以通过以下方法设置连接池配置信息:

import org.apache.commons.dbcp2.BasicDataSource;

public class HiveJdbcExample {
  public static void main(String[] args) throws SQLException {
    //连接池对象
    BasicDataSource ds = new BasicDataSource();
    //设置HiveJDBC连接URL
    ds.setUrl("jdbc:hive2://:/");
    //设置连接用户名
    ds.setUsername("");
    //设置连接密码
    ds.setPassword("");
    //设置最大连接数
    ds.setMaxTotal(50);
    //获取连接
    Connection conn = ds.getConnection();
  }
}

六、hivejdbctemplate

HiveJdbcTemplate是SpringFramework提供的JDBC模板类,可以方便地执行Hive SQL语句。使用HiveJdbcTemplate,不需要手动创建连接,只需要配置数据源即可。

七、hivejdbctemplate 大小写

HiveJdbcTemplate默认执行SQL语句时,不区分大小写。如果需要区分大小写,可以通过以下方法设置:

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

public class HiveJdbcTemplateExample {
  public static void main(String[] args) {
    //数据源
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("org.apache.hive.jdbc.HiveDriver");
    dataSource.setUrl("jdbc:hive2://:/");
    dataSource.setUsername("");
    dataSource.setPassword("");
    //JdbcTemplate
    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    jdbcTemplate.setIgnoreCase(false); //设置为区分大小写
  }
}

八、hivejdbc 查spark报错

当Hive与Spark集成时,可能会出现HiveJDBC执行SQL报错的情况,此时需要设置Spark配置项。可以通过以下方法启用Spark集成:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class HiveJdbcExample {
  public static void main(String[] args) throws SQLException {
    //连接字符串
    String url = "jdbc:hive2://:/;transportMode=http";
    Properties props = new Properties();
    //设置Spark Master URL
    props.setProperty("spark.master", "spark://:");
    //获取连接
    Connection conn = DriverManager.getConnection(url, props);
  }
}

九、hivejdbc执行sql长时间不返回结果

当Hive执行SQL语句时,可能需要较长时间才能返回结果,此时可以设置HiveJDBC连接的Socket超时时间,可以通过以下方法设置:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class HiveJdbcExample {
  public static void main(String[] args) throws SQLException {
    //连接字符串
    String url = "jdbc:hive2://:/";
    Properties props = new Properties();
    //设置Socket超时时间为5分钟
    props.setProperty("hive.server2.long.polling.timeout", "300000");
    //获取连接
    Connection conn = DriverManager.getConnection(url, props);
  }
}

十、hivejdbcdriver 500051

当使用HiveJDBC执行SQL语句时,可能会出现错误码为500051的异常,该异常是由于Hive返回的数据过大,超出了HiveJDBC的缓存空间。可以通过以下方法设置HiveJDBC的缓存空间大小:

import org.apache.hadoop.hive.conf.HiveConf;

public class HiveJdbcExample {
  public static void main(String[] args) {
    //HiveConf对象
    HiveConf conf = new HiveConf();
    //设置结果集缓存大小为1GB
    conf.setVar(HiveConf.ConfVars.HIVE_RESULTSET_MAX_CACHE_SIZE, "1000000000");
  }
}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/157663.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-18 20:02
下一篇 2024-11-18 20:02

相关推荐

  • index.html怎么打开 – 详细解析

    一、index.html怎么打开看 1、如果你已经拥有了index.html文件,那么你可以直接使用任何一个现代浏览器打开index.html文件,比如Google Chrome、…

    编程 2025-04-25
  • Resetful API的详细阐述

    一、Resetful API简介 Resetful(REpresentational State Transfer)是一种基于HTTP协议的Web API设计风格,它是一种轻量级的…

    编程 2025-04-25
  • neo4j菜鸟教程详细阐述

    一、neo4j介绍 neo4j是一种图形数据库,以实现高效的图操作为设计目标。neo4j使用图形模型来存储数据,数据的表述方式类似于实际世界中的网络。neo4j具有高效的读和写操作…

    编程 2025-04-25
  • 关键路径的详细阐述

    关键路径是项目管理中非常重要的一个概念,它通常指的是项目中最长的一条路径,它决定了整个项目的完成时间。在这篇文章中,我们将从多个方面对关键路径做详细的阐述。 一、概念 关键路径是指…

    编程 2025-04-25
  • AXI DMA的详细阐述

    一、AXI DMA概述 AXI DMA是指Advanced eXtensible Interface Direct Memory Access,是Xilinx公司提供的基于AMBA…

    编程 2025-04-25
  • c++ explicit的详细阐述

    一、explicit的作用 在C++中,explicit关键字可以在构造函数声明前加上,防止编译器进行自动类型转换,强制要求调用者必须强制类型转换才能调用该函数,避免了将一个参数类…

    编程 2025-04-25
  • HTMLButton属性及其详细阐述

    一、button属性介绍 button属性是HTML5新增的属性,表示指定文本框拥有可供点击的按钮。该属性包括以下几个取值: 按钮文本 提交 重置 其中,type属性表示按钮类型,…

    编程 2025-04-25
  • crontab测试的详细阐述

    一、crontab的概念 1、crontab是什么:crontab是linux操作系统中实现定时任务的程序,它能够定时执行与系统预设时间相符的指定任务。 2、crontab的使用场…

    编程 2025-04-25
  • Vim使用教程详细指南

    一、Vim使用教程 Vim是一个高度可定制的文本编辑器,可以在Linux,Mac和Windows等不同的平台上运行。它具有快速移动,复制,粘贴,查找和替换等强大功能,尤其在面对大型…

    编程 2025-04-25
  • 网站测试工具的详细阐述

    一、测试工具的概述 在软件开发的过程中,测试工具是一个非常重要的环节。测试工具可以快速、有效地检测软件中的缺陷,提高软件的质量和稳定性。与此同时,测试工具还可以提高软件开发的效率,…

    编程 2025-04-25

发表回复

登录后才能评论