一、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/zh-tw/n/157663.html