Hive之Java操作jdbc以及指令碼實現
原部落格地址:http://blog.csdn.net/evankaka
摘要:本文主要講了如何通過java來連線Hive,以及如何執行hive指令碼
一、Hive連線
1.1、通過shell
1、Hive 命令列模式,直接輸入#/hive/bin/hive的執行程式,或者輸入#hive --service cli
#hive --service hwi
用於通過瀏覽器來訪問hive
http://hadoop0:9999/hwi/
3、 hive 遠端服務 (埠號10000) 啟動方式
#hive --service hiveserver
注意:hiveserver不能和hwi服務同時啟動使用。
4、使用dbveare工具
需要將presto的jar新增進來並配置連線
1.2 通過java程式碼
使用Java程式碼來連線hive時,驅動可以選擇使用jdbc,也可以選擇使用presto
HiveServer使用thrift服務來為客戶端提供遠端連線的訪問埠,在JDBC連線Hive之前必須先啟動HiveServer。
- hive --service hiveserver
hiveserver預設埠是10000,可以使用hive --service hiveserver -p 10002,更改預設啟動埠,此埠也是JDBC連線埠。
1、直接通過jdbc
- package com.lin.bdp.common.utils;
- import java.lang.reflect.Field;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.ResultSetMetaData;
-
import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.ArrayList;
- import java.util.List;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import com.lin.bdp.common.vo.Visitor;
- /**
- *
- * 功能概要:hive客戶端工具
- *
- * @author linbingwen
- * @since 2016年10月20日
- */
- publicclass HiveJdbcClient {
- privatestaticfinal Logger logger = LoggerFactory.getLogger(HiveJdbcClient.class);
- publicstaticfinalchar UNDERLINE = '_';
- privatestatic String driverName;
- privatestatic String url;
- privatestatic String user;
- privatestatic String password;
- privatestaticclass LazyHolder {
- privatestaticfinal HiveJdbcClient INSTANCE = new HiveJdbcClient();
- }
- publicstaticfinal HiveJdbcClient getInstance() {
- return LazyHolder.INSTANCE;
- }
- /**
- * 初始化引數
- * @author linbingwen
- * @since 2016年10月20日
- */
- privatevoid init() {
- driverName = ConfigLoader.getProperty("hive.jdbc.driverName");
- url = ConfigLoader.getProperty("hive.jdbc.url");
- user = ConfigLoader.getProperty("hive.jdbc.user");
- password = ConfigLoader.getProperty("hive.jdbc.password");
- }
- privatevoid initPresto() {
- driverName ="com.facebook.presto.jdbc.PrestoDriver";
- url = "jdbc:presto://10.78.104.5:8080/hive/ods_uba";
- user = "presto";
- password = "[email protected]";
- }
- private HiveJdbcClient() {
- init();
- }
- /**
- * 獲取連線
- * @author linbingwen
- * @since 2016年10月20日
- * @return
- * @throws ClassNotFoundException
- * @throws SQLException
- */
- private Connection getConnection() throws ClassNotFoundException, SQLException {
- Class.forName(driverName);
- Connection conn = DriverManager.getConnection(url, user, password);
- return conn;
- }
- /**
- * 按條件查詢
- * @author linbingwen
- * @since 2016年10月20日
- * @param clazz
- * @param sql
- * @return
- * @throws Exception
- */
- public <T> List<T> find(Class<T> clazz, String sql) throws Exception {
- if (sql == null || sql.length() == 0) {
- logger.warn("查詢sql語句不能為空");
- returnnew ArrayList<T>();
- }
- Connection connection = null;
- PreparedStatement preState = null;
- ResultSet rs = null;
- try {
- connection = getConnection();
- Statement stmt = connection.createStatement();
- rs = stmt.executeQuery(sql);
- return (List<T>) handler(clazz, rs);
- } catch (Exception e) {
- logger.error("sql = {}執行出錯,Exception = {}", sql, e.getLocalizedMessage());
- throw e;
-
相關推薦
Hive之Java操作jdbc以及指令碼實現
原部落格地址:http://blog.csdn.net/evankaka 摘要:本文主要講了如何通過java來連線Hive,以及如何執行hive指令碼 一、Hive連線 1.1、通過shell 1、Hive 命令列模式,直接輸入#/hive
java操作JDBC之Oracle工具類
/** * JDBC之Oracle工具類 * * @author: Rodge * @time: 2018年10月4日 下午4:06:15 * @version: V1.0.0 */ public class JDBCUtilForOracle { private static fi
java操作JDBC之MySQL工具類
/** * JDBC之MySQL工具類 * * @author: Rodge * @time: 2018年10月4日 下午4:03:42 * @version: V1.0.0 */ public class JDBCUtilForMySQL { private static fin
Hive 之 Java API 操作
Java 想要訪問Hive,需要通過beeline的方式連線Hive,hiveserver2提供了一個新的命令列工具beeline,hiveserver2 對 之前的hive做了升級,功能更加強大,它增加了許可權控制,要使用beeline需要先啟動hiverse
Java學習篇之--用純Java的JDBC驅動程式實現與資料庫連線
用純Java的JDBC驅動程式實現與資料庫連線 最近在研究JAVA中資料庫的連線,將知識整理一下分享給大家: Java程式可以用純Java的JDBC驅動程式實現與資料庫連線。這種方法應用較廣泛,但是需要下載相應的驅動程式包,因為不同的資
Java操作數據庫實現"增刪改查"
mysq 新的 rom 可用 erp catch next() value eight 本文主要講解JDBC操作數據庫 主要實現對MySql數據庫的"增刪改查" 綜合概述: JDBC的常用類和接口 一 DriverManager類 DriverManage類用
Elasticsearch學習之Java操作1
默認 time field java客戶端 OS should timeval nodes spa 1. Elasticsearch為Java用戶提供了兩種內置客戶端 1.1 節點客戶端(node client): 節點客戶端以無數據節點(none data nod
編程開發之--Java集合類繼承與實現必備知識
編程開發 next() int end long dha cos dHash IV 1、LinkedHashSet有序鏈式集合 舉例: long startTime=System.currentTimeMillis(); LinkedHashSet oprTypeSe
第一次使用java操作Redis以及錯誤小結
目錄 java操作Redis的流程: 1.匯入jedis依賴包: 2.匯入junit依賴包: 3.寫測試方法: 關於testJedis( )執行時控制檯報錯分析: 1.redis.clients.jedis.exceptions.JedisConnec
java操作pdf——擴充套件功能實現
正經學徒,佛系記錄,不搞事情 基於上一個專案:https://blog.csdn.net/qq_31748587/article/details/84550356 新增的提供的方法: 圖片轉pdf 讀取pdf文字 pdf轉圖片 批量pdf合成一份pdf並生成目
java操作pdf——基礎功能實現
正經學徒,佛系記錄,不搞事情 itextpdf 是java用於操作pdf檔案的工具,速度極快,目前測試上千頁的pdf檔案都不在話下 下面編寫的工具類,可看作是將pdf檔案轉成類似list的集合,通過對list的CURD操作,最終生成一個新的list集合,即生成一個新的pdf檔案 提供
高併發-【搶紅包案例】之四:使用Redis+Lua指令碼實現搶紅包並非同步持久化到資料庫
文章目錄導讀概述 導讀 概述 上面三篇博文是使用的MySql資料庫來作為資料的載體資料最終會將資料儲存到磁碟中,而Redis使用的是記憶體,記憶體的速度比磁碟速度肯定要快很多. 對於使用 Redis實現搶紅包,首先需要知道的是Redis的功能不如資料庫
spring之AOP操作(基於aspectJ實現)--配置檔案和註解兩種方式實現
AOP概念 1 aop:面向切面(方面)程式設計,擴充套件功能不修改原始碼實現 2 AOP採取橫向抽取機制,取代了傳統縱向繼承體系重複性程式碼 3 aop底層使用動態代理實現 (1)第一種情況,有介面情況,使用動態代理建立介面實現類代理物
Java 利用 JDBC 連線 Sqlsever2012 實現 增刪改查
所需驅動檔案下載 http://download.csdn.net/detail/u012320991/9378730 資料表如下: 執行結果如下: 解決過程(預設SqlSever 已安裝並配置好): 下載 JDBC 4.0 For SqlSever --->
以CSV檔案匯入MySQL的批量資料插入操作之Java操作
最近工作涉及將excel中的資料匯入到MySQL資料庫,由於Excel中資料並不規範,需要進行二次加工。將excel中資料加工後,通過mybatis批量插入mySQL資料庫,其相關聯的技術點比較簡單,經過半天的編寫,算是把任務完成了。但測試時效能太差,處理2W條資料的exc
Kafka筆記三之java操作
maven依賴,我使用的是版本是0.8.22,scala是2.11 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11&l
java封裝優點——以及如何實現案例
Java 封裝 在面向物件程式設計方法中,封裝(英語:Encapsulation)是指一種將抽象性函式介面的實現細節部份包裝、隱藏起來的方法。 封裝可以被認為是一個保護屏障,防止該類的程式碼和資料被外部類定義的程式碼隨機訪問。 要訪問該類的程式碼和資料,必須通過嚴格的介面控制。
Elasticsearch筆記五之java操作es
Java操作es叢集步驟1:配置叢集物件資訊;2:建立客戶端;3:檢視叢集資訊 1:叢集名稱 預設叢集名為elasticsearch,如果叢集名稱和指定的不一致則在使用節點資源時會報錯。 2:嗅探功能 通過client
Android多執行緒之Java 8中ThreadLocal內部實現機制詳解
前言:ThreadLocal是執行緒內部的儲存類,通過它可以實現在每個執行緒中儲存自己的私有資料。即資料儲存以後,只能在指定的執行緒中獲取這個儲存的物件,而其它執行緒則不能獲取到當前執行緒儲存的這個物件。ThreadLocal有一個典型的應用場景,即我們在前文中
ES之JAVA操作
連線Client// 按叢集名稱建立 /** * clusterName需要跟elasticsearch.yml裡的clusterName相同 */ Settings settings = Settings.builder().put("cluster.n