一、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