99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Java JDBC連接Hive實戰(zhàn):HiveServer2原理與五大避坑經(jīng)驗

Java JDBC連接Hive實戰(zhàn):HiveServer2原理與五大避坑經(jīng)驗 簡介面向Java與大數(shù)據(jù)開發(fā)者以Hive JDBC連接為主題提供一套可直接運行的基礎操作示例覆蓋通過Hive查詢語句創(chuàng)建表、插入記錄、查詢結(jié)果等常用場景也包含Kerberos認證連接時的URL與參數(shù)配置參考。整個壓縮包共22個文件包括Maven配置xml、Java源碼、編譯后的class文件以及依賴jar包合計約24.97MB目錄結(jié)構(gòu)清晰可快速定位主程序和資源文件。已有2444人瀏覽學習適合正在入門Hive大數(shù)據(jù)開發(fā)、需要參考JDBC連接寫法或搭建實驗環(huán)境的讀者。資源整合了驅(qū)動依賴引入方式、連接建立步驟、結(jié)果集遍歷處理和資源釋放規(guī)范導入IDE后即可對照源碼理解并執(zhí)行能幫助開發(fā)者快速掌握JDBC與Hive交互的完整實現(xiàn)思路。示例還保留了打包運行所需的target目錄與構(gòu)建配置可據(jù)此修改訪問地址、賬號密碼或認證信息進一步擴展為數(shù)據(jù)導入、ETL等小型應用也可作為后續(xù)接入Spring JdbcTemplate或MyBatis的起點。1. 用Java JDBC連Hive不只是跑通一個查詢那么簡單作為一個常年寫Java的工程師你可能閉著眼就能寫出MySQL的JDBC連接代碼但把URL換成jdbc:hive2://之后很多習慣都不成立了。Hive本身不是數(shù)據(jù)庫它沒有存儲過程、沒有事務甚至沒有專用查詢端口Java JDBC連接Hive數(shù)據(jù)實際是連接它背后的HiveServer2服務讓服務端去調(diào)度MapReduce或Tez完成計算。標題里點名了“簡單的操作”但真從零開始做一遍可能會撞上驅(qū)動包沖突、認證方式不明、查詢卡死等一堆問題。這篇文章面向有Java基礎、但對Hive JDBC只有模糊概念的讀者從連接原理講到最小工程再講到五條值得記錄的踩坑經(jīng)驗讓你不至于在第一步就翻車。2. 先搞懂Hive JDBC的底層鏈路HiveServer2與驅(qū)動選擇2.1 Hive JDBC不是連數(shù)據(jù)庫是連HiveServer2很多入門教程把“JDBC連Hive”說得和“JDBC連MySQL”一樣簡單這可太誤導了。Hive是一個數(shù)倉工具它把SQL翻譯成分布式計算任務底層對象是HDFS上的目錄和文件。Hive的元數(shù)據(jù)庫、表、字段、分區(qū)都存在MetaStore一般運行在獨立進程里而負責接收客戶端請求的進程是HiveServer2簡稱HS2。所以Java程序用JDBC連上HS2本質(zhì)上是建立一個Thrift會話然后把SQL字符串丟給HS2由它完成編譯、優(yōu)化、執(zhí)行和結(jié)果回收。你手里的Connection對象并不是在和某個數(shù)據(jù)庫實例對話而是在和HS2的會話服務對話。理解這一點前先記住一條關鍵結(jié)論Hive JDBC有一套獨立的驅(qū)動和URL協(xié)議和MySQL、Oracle完全不同。MySQL用com.mysql.cj.jdbc.DriverURL寫jdbc:mysql://ip:3306/db?useSSLfalse而Hive的驅(qū)動是org.apache.hive.jdbc.HiveDriverURL以jdbc:hive2://開頭。別小看這后半段它決定了HS2的認證方式、底層的傳輸模式以及會話超時參數(shù)。如果你還停留在“JDBC只是換一個驅(qū)動類”的認知后面排查問題時會很痛苦。HiveServer2本身是一個常駐的JVM進程你可以把它理解成“SQL網(wǎng)關”。它內(nèi)部對接了執(zhí)行引擎可以是MapReduce、Tez或Spark。默認配置下如果你什么都不改HS2會監(jiān)聽在0.0.0.0:10000但這不代表你的客戶端就能連上因為中間還隔著防火墻、用戶權(quán)限和認證配置。常見的錯誤是Hive已經(jīng)安裝好了卻沒有人啟動HS2于是JDBC報告拒絕連接。在動手寫Java代碼之前先確認這個服務是活的并且端口能被你的開發(fā)機訪問到。關于“為什么連接Hive要用HS2而不是連MetaStore”還有一個容易混淆的點MetaStore暴露的是Thrift接口端口通常是9083它只負責元數(shù)據(jù)讀寫不執(zhí)行SQL查詢。如果你用JDBC去連9083協(xié)議完全不兼容立馬報錯。所以只要看到jdbc:hive2://它的目標一定是HS2的端口也就是默認的10000。如果要把Hive的安裝與配置做扎實也請把hive-site.xml中的hive.server2.thrift.port和hive.metastore.uris這兩樣參數(shù)拆開記清楚一個是SQL入口一個是元數(shù)據(jù)入口別搞混。2.2 驅(qū)動類與URL格式Class.forName和jdbc:hive2://怎么匹配現(xiàn)在來看Java代碼里最直接的驅(qū)動類。Hive 1.x時代的老驅(qū)動類名是org.apache.hadoop.hive.jdbc.HiveDriverHive 2.0之后被新接口取代改成了org.apache.hive.jdbc.HiveDriver。如果項目中依賴的是Hive 3.x的hive-jdbc包加載的驅(qū)動類一定是后者。很多教程還停留在老寫法用了老驅(qū)動類不僅代碼風格陳舊還可能和當前的Hadoop版本沖突。我的建議是在新項目里只認準org.apache.hive.jdbc.HiveDriver這一個即使顯式寫Class.forName也不容易出錯。完整URL長這樣jdbc:hive2://hive-server.example.com:10000/default;authnoauth;socketTimeout60;transportModebinary不要把它和MySQL的URL混為一談。Hive的URL里除了host:port/dbName后面用分號拼接參數(shù)不是用問號和。常用的參數(shù)有auth指定認證方式取值是noauth、kerberos、ldapsocketTimeout以秒為單位控制底層socket超時默認是0表示不超時生產(chǎn)環(huán)境最好顯式設置否則一個卡住的任務會讓線程掛很久transportMode取binary或http前者是HS2默認端口后者會走HTTP網(wǎng)關配合httpPath使用。這些參數(shù)不是擺設你會在第5章看到它們引發(fā)的實際問題。顯式加載驅(qū)動在JDBC 4.0之后不是必須的因為DriverManager能從classpath中自動發(fā)現(xiàn)META-INF/services里的驅(qū)動。但是如果開發(fā)環(huán)境里同時存在多個JDBC驅(qū)動或者你把hive-jdbc包用shade插件打進了FatJarSPI可能失效這時在代碼里保留一行Class.forName(org.apache.hive.jdbc.HiveDriver)能減少不少玄學問題。這行代碼不會被記入什么“先進做法”但它是穩(wěn)定兜底至少能讓ClassNotFoundException這個報錯早一點暴露。把URL和驅(qū)動類對應起來之后還要理解“庫名”的語義。URL中間的那段dbName代表你要進入的Hive數(shù)據(jù)庫比如default。你可以在每次打開連接時指定它也可以在連接后通過stmt.execute(use db)來切換。不過Hive JDBC的Connection.setCatalog、setSchema實現(xiàn)并不像MySQL那么完整很多版本壓根不支持所以最可靠的辦法還是把數(shù)據(jù)庫名直接寫進URL里。順帶一提如果在URL中省略dbName連接會落到default庫建議不要依賴這個缺省值顯式寫清楚后面讀代碼的人也更舒服。3. 從零搭一個可復現(xiàn)的連接工程依賴、配置與最小示例3.1 環(huán)境準備Hive的安裝與配置里最影響JDBC的三個點在你新建Maven工程之前先把服務端準備好。假設你已經(jīng)完成了Hive的安裝與配置那至少要讓這三個點立住第一HiveServer2的綁定地址和端口要和開發(fā)機可達第二HS2和MetaStore兩個進程都在運行第三用于連接的用戶有HDFS上讀寫對應目錄的權(quán)限。第三個點特別容易被Java工程師忽略因為本地連接MySQL時數(shù)據(jù)庫賬號往往只管庫表權(quán)限但在Hive這里用戶最終要訪問HDFS文件沒有HDFS權(quán)限SQL能編譯卻會在執(zhí)行階段報PermissionDenied。啟動HS2的標準姿勢是在Hive安裝目錄下執(zhí)行nohup hive --service metastore /tmp/metastore.log 21 nohup hive --service hiveserver2 /tmp/hiveserver2.log 21 這兩行命令分別啟動了MetaStore和HiveServer2。注意順序一般建議先啟動MetaStore再啟動HS2因為HS2啟動時會去連接MetaStore。如果hive-site.xml里要求的MetaStore地址連不上HS2會直接啟動失敗或在日志里刷滿連接異常。檢驗是否啟動成功可以執(zhí)行l(wèi)sof -i :10000查看端口監(jiān)聽或者直接跑beelinebeeline -u jdbc:hive2://localhost:10000/default -n hive如果Beeline能連上說明服務端本身沒問題接下來寫Java就少一個變量。如果你的HS2綁定的是內(nèi)網(wǎng)IP而不是0.0.0.0記得把hive.server2.thrift.bind.host改成對外可達的地址否則開發(fā)機永遠連不上。這些配置散落在hive-site.xml里常見問題是有人改了hive-site.xml卻沒重啟HS2導致連不上時根本測不出問題。還有一個和環(huán)境一起出現(xiàn)的坑Hive JDBC的Maven依賴會拖出一大堆Hadoop和Guava的傳遞依賴。我的經(jīng)驗是最好把hive-jdbc的依賴放在一個獨立的模塊里或者用maven-shade-plugin把依賴重新定位否則它和Spring Boot自帶的Guava版本沖突幾乎是家常便飯。版本選擇上可以直接使用與集群HIVE版本一致的坐標比如3.1.3。不要盲目追新Hive的客戶端版本要比服務端版本略低或持平太高可能觸發(fā)協(xié)議不兼容。3.2 最小Java代碼建立連接、執(zhí)行查詢并打印結(jié)果現(xiàn)在可以寫Java了。先建一個最普通的Maven項目在pom.xml里加上依賴dependency groupIdorg.apache.hive/groupId artifactIdhive-jdbc/artifactId version3.1.3/version /dependency注意這個坐標會傳遞引入hadoop-client、guava等一系列包。如果你不想在單測里被類的沖突折磨可以再用exclusions排除掉部分高版本Guava或者用shade插件處理。下面是最小可運行的代碼它做的事是連上HS2并打印所有庫名import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class HiveJdbcSimple { public static void main(String[] args) { String url jdbc:hive2://192.168.1.10:10000/default;authnoauth; String user hive; String password ; try { Class.forName(org.apache.hive.jdbc.HiveDriver); } catch (ClassNotFoundException e) { e.printStackTrace(); return; } try (Connection conn DriverManager.getConnection(url, user, password); Statement stmt conn.createStatement(); ResultSet rs stmt.executeQuery(show databases)) { while (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException e) { e.printStackTrace(); } } }這段代碼的邏輯很簡單先顯式加載HiveDriver再通過DriverManager.getConnection建立連接然后創(chuàng)建Statement執(zhí)行show databases。注意我用了try-with-resources這樣Connection、Statement、ResultSet會在使用完畢后自動關閉避免連接泄漏。authnoauth表明這個HS2沒有開啟認證user和password傳了也會被忽略但不傳user有時會觸發(fā)NPE所以建議保留。executeQuery返回的ResultSet和MySQL JDBC最大的不同是Hive JDBC的查詢是異步提交給HS2的executeQuery會阻塞等待作業(yè)執(zhí)行完成然后一次性緩沖返回結(jié)果。這意味著你的客戶端不能像MySQL那樣期待流式讀取數(shù)據(jù)量大時JVM堆可能被打爆。這個問題會在后面“避坑”章節(jié)細說?,F(xiàn)在只要知道跑通這個最小示例是后面所有操作的地基。如果你看到打印出的庫名列表恭喜你JDBC通路已經(jīng)打通。如果失敗建議先用Beeline跑同樣的URL這樣能把問題迅速定位在“Hive本身”還是“Java環(huán)境”。別一上來就懷疑自己的Java代碼Hive JDBC最常掛在服務端、網(wǎng)絡和依賴三件事上這些無法靠代碼修復。3.3 參數(shù)說明URL里的host、port、dbName與會話參數(shù)能把最小代碼跑通之后值得把URL里的參數(shù)吃得再透一點。host和port決定了你連哪臺機器這好理解dbName的作用也不只是定個默認庫它還影響HS2做語句解析時的搜索路徑。比如你要查的表在ods庫URL寫成jdbc:hive2://host:10000/ods就能少寫一個庫前綴。如果表分布在多個庫那就在URL里寫default然后在SQL里寫ods.table_name。下面這張表是幾個常用參數(shù)的備查清單參數(shù)作用示例auth認證類型noauth/kerberos/ldapauthkerberossocketTimeoutsocket層超時秒數(shù)0為不超時socketTimeout60transportMode傳輸方式binary或httptransportModehttphttpPath配合HTTP模式使用的網(wǎng)關路徑httpPathcliservicetimeZone會話時區(qū)影響時間類型轉(zhuǎn)換timeZoneAsia/Shanghai這些參數(shù)用分號拼接在URL尾部。還要注意如果某個參數(shù)值本身含特殊字符可能需要URL編碼這種情況多出現(xiàn)在Kerberos的principal里后面會提。另外Hive的會話參數(shù)并不都能通過URL設置比如你想讓某個查詢改用Tez引擎就得在每次連接后執(zhí)行stmt.execute(set hive.execution.enginetez)。這種set語句是會話級別的只對當前Connection有效連接關閉后失效。通過JDBC設置會話參數(shù)比在HS2服務端全局修改要靈活得多。我一般在執(zhí)行復雜SQL前會在代碼里拼一個set mapreduce.job.reduces20之類的語句避免每個查詢都吃默認配置。需要注意set語句的返回不是一個標準的ResultSet通常是一個只有一列字符串的結(jié)果集但如果你執(zhí)行的是set而不是set xxxHive會返回所有配置項這本身也是一個調(diào)試手段。還有一點容易忽略DriverManager.getConnection可能會在你的應用里觸發(fā)大量的連接創(chuàng)建而HiveServer2每個連接都會占用一個會話線程。如果業(yè)務并發(fā)高務必在應用層加連接池或限流否則HS2的線程數(shù)飆升最終表現(xiàn)為連接超時。這個話題留到第6章再展開但你現(xiàn)在至少要知道hive.server2.max.threads這個參數(shù)不是隨便設的它是HS2默認線程池大小的上限。4. 實現(xiàn)簡單操作建表、寫入與查詢以及PreparedStatement的邊界4.1 用JDBC執(zhí)行DDL在Hive里建內(nèi)部表與外部表標題里的“簡單操作”大部分是這三種建表、裝載數(shù)據(jù)、查詢。用JDBC執(zhí)行DDL和用Beeline操作幾乎一樣區(qū)別只是SQL語句不能有結(jié)尾分號也不需要額外傳腳本文件。下面這段代碼先檢查目標表是否存在然后創(chuàng)建一個按日期分區(qū)的內(nèi)部表try (Connection conn DriverManager.getConnection(url, user, password); Statement stmt conn.createStatement()) { stmt.execute(create table if not exists ods.t_user_login ( user_id int, login_time string, device_type string) partitioned by (dt string) stored as orc); } catch (SQLException e) { e.printStackTrace(); }這里沒有用executeQuery因為DDL語句不會返回結(jié)果集execute就夠了。邏輯上create table if not exists可以保證重復運行時不會報錯但從工程角度看如果表結(jié)構(gòu)改了這種自動跳過會讓你的腳本悄悄失效。所以我更推薦在Java代碼里先查一下show create table的返回如果表存在且結(jié)構(gòu)不符就主動告警而不是靜默跳過。關于內(nèi)部表和外部表的選擇內(nèi)部表的目錄由Hive管理drop時數(shù)據(jù)被刪掉外部表需要指定locationdrop時只刪元數(shù)據(jù)HDFS文件還在。用JDBC做自動化建表時我強烈建議優(yōu)先考慮外部表尤其是讀取其他系統(tǒng)寫入的HDFS數(shù)據(jù)。因為JDBC執(zhí)行DDL太順滑時容易讓人忘記表后面還有一份物理數(shù)據(jù)。如果你建表時沒寫external默認就是內(nèi)部表后續(xù)要恢復一份數(shù)據(jù)就要重新裝載了。建表語句中分區(qū)字段dt string的位置是“partitioned by”它不能在普通字段列表里重復出現(xiàn)。有很多新手會在這里把dt既當普通字段寫一遍又放在分區(qū)字段里Hive雖然不報錯但查詢時會出現(xiàn)重復字段沖突這算是一個不成文的坑。在這里用stored as orc指定存儲格式也是建議的默認值。ORC比TextFile在壓縮和統(tǒng)計信息上更適合數(shù)倉場景后文查坑時會看到它對小文件也有影響。4.2 裝載數(shù)據(jù)與查詢load data與select的JDBC寫法建表之后要裝載數(shù)據(jù)。如果數(shù)據(jù)已經(jīng)以文件形式放在HDFS上最直接的方式是執(zhí)行l(wèi)oad data。假設你已經(jīng)把login.log放到了HDFS的/data/20240901/目錄下Java代碼是這樣的String loadSql load data inpath /data/20240901/login.log overwrite into table ods.t_user_login partition (dt2024-09-01); try (Statement stmt conn.createStatement()) { stmt.execute(loadSql); }注意load data inpath會把HDFS上的文件“移動”到表目錄里而不是復制。如果源目錄是業(yè)務系統(tǒng)的實時產(chǎn)出移動后源數(shù)據(jù)就沒了這是一個很危險的操作。我在生產(chǎn)環(huán)境里一般不會用load data inpath去接外部業(yè)務數(shù)據(jù)而是采用load data local inpath從HS2所在機器的本地目錄上裝載或者干脆用外部表指向那個目錄再通過msck repair table刷新分區(qū)。用JDBC執(zhí)行l(wèi)oad data時local的語義稍微有點繞如果寫的是local那么文件路徑是HS2服務端的本地路徑不是你Java程序所在機器的路徑。這一步有無數(shù)人踩坑因為開發(fā)環(huán)境里跑Java的機器和HS2通常不是同一臺。裝載完數(shù)據(jù)后寫一個帶統(tǒng)計的查詢String sql select dt, count(1) from ods.t_user_login where dt 2024-09-01 group by dt; try (Statement stmt conn.createStatement(); ResultSet rs stmt.executeQuery(sql)) { while (rs.next()) { System.out.println(rs.getString(dt) \t rs.getLong(2)); } }Hive JDBC的ResultSet和MySQL相比存在以下區(qū)別默認fetchSize是1000也就是說HS2一次性給客戶端的行數(shù)是有限的超過部分要在Java代碼里慢慢迭代getString(dt)按列名獲取是能用的但不保證所有版本都支持重復列名。建議能按列序號取的就按列序號取避免HS2在列別名解析上的差異。這個小細節(jié)在數(shù)據(jù)字段多、SQL別名復雜時尤其有用。load data還有一個隱藏的語義overwrite關鍵字會清空分區(qū)里已有的文件再放入新文件。如果你想追加數(shù)據(jù)就不要寫overwrite讓HS2把文件放進去。但這里要提醒如果文件格式是ORC源文件格式和表格式不一致時load data不會做轉(zhuǎn)換它會直接把源文件放到表目錄里導致查出來是亂碼或零行。很多團隊最終放棄load data改為在Hive里用insert把數(shù)據(jù)轉(zhuǎn)換一次就是這個原因。4.3 PreparedStatement在Hive JDBC里的使用邊界很多Java開發(fā)者一看到JDBC就習慣性地用PreparedStatement但在Hive JDBC上要格外冷靜。Hive JDBC驅(qū)動對PreparedStatement的支持是“能用但功能很有限”。正則的?占位符在executeQuery里能工作但綁定參數(shù)的類型推斷有時會出錯比如字符串參數(shù)被當成列名或數(shù)字。更關鍵的是Hive不支持事務Connection的commit/rollback基本是空操作在執(zhí)行“寫操作”時executeUpdate的返回值也和各種數(shù)據(jù)庫都不一樣有的版本返回-1或0不能依賴于這個返回值判斷是否有數(shù)據(jù)變更??匆幌掠肞reparedStatement插入單條語句的嘗試String insertSql insert into table ods.t_user_login values (?, ?, ?, ?); try (PreparedStatement ps conn.prepareStatement(insertSql)) { ps.setInt(1, 1001); ps.setString(2, 2024-09-01 08:00:00); ps.setString(3, ios); ps.setString(4, 2024-09-01); ps.executeUpdate(); }這段代碼在Hive 3.x上能跑通但它會觸發(fā)一個MapReduce或Tez作業(yè)非常慢。如果循環(huán)一萬次就是一萬個作業(yè)產(chǎn)生的開銷和小文件數(shù)量都不可控。這里就涉及到“hive優(yōu)化小文件”的核心場景你在Java代碼里用insert into values一條條寫Hive在本質(zhì)上并不是行級數(shù)據(jù)庫每執(zhí)行一次都可能在HDFS上產(chǎn)生至少一個文件。我見過有人用這種寫法同步日志跑了一晚上表目錄下出現(xiàn)了上萬個小文件查詢性能一落千丈。正確姿勢是如果業(yè)務性質(zhì)是離線批量導入先寫臨時文件再用load data一次裝載如果數(shù)據(jù)原本在關系庫里應該走Sqoop或編寫Flink/Spark的批量寫入而不是在JDBC里逐條insert。即使某些場景非用insert不可也盡量用insert into ... select ...配合distribute by或cluster by來控制最終生成的文件數(shù)。PreparedStatement在Hive里更大的價值不是避免SQL注入而是讓你把SQL模板化至于參數(shù)注入安全Hive JDBC實質(zhì)上把SQL原樣發(fā)給HS2注入風險反而要更認真地對待。既然PreparedStatement有這個短板那就老老實實回到Statement。日常做數(shù)據(jù)校驗或臨時查詢直接拼接SQL并不丟人只要你拼的是固定表名和硬編碼條件不把用戶輸入直接拼進去。如果一定要用綁定變量先在你的Hive版本上做一次小實驗把參數(shù)類型和結(jié)果集列類型打印出來比對。多數(shù)情況下你會發(fā)現(xiàn)與其和驅(qū)動的限制搏斗不如改用Statement再用自定義的占位符替換。5. 常見問題與避坑從連接失敗到查詢卡死的5條血淚記錄5.1 連接失敗ClassNotFoundException、端口不可達與URL缺庫名現(xiàn)象程序一啟動就拋ClassNotFoundException: org.apache.hive.jdbc.HiveDriver或者在DriverManager.getConnection時拋出Could not open client transport。前者說明依賴沒進classpath后者說明網(wǎng)絡或服務不可達。原因往往有幾種Maven項目里只引入了老的hive-jdbc但類名寫錯依賴被Scope為provided運行期缺失或者HS2沒啟動、防火墻擋了端口。解決方法是先分開驗證用mvn dependency:tree查驅(qū)動包是否引入再用telnet host 10000查端口最后用Beeline做同樣URL的連接測試。URL缺數(shù)據(jù)庫名導致的異常通常表現(xiàn)為“表找不到”或“Failed to Schema”其實只是因為缺庫名讓HS2用了你沒權(quán)限的默認庫加上顯式的dbName基本能處理掉。5.2 查詢卡死fetch size、作業(yè)排隊與執(zhí)行引擎現(xiàn)象SQL明明不復雜但executeQuery遲遲不返回甚至幾分鐘過去了還沒結(jié)果。原因不只是JDBC慢可能還有兩個一是HS2把SQL提交給了YARN但集群里任務隊列滿作業(yè)一直排隊二是Hive JDBC在結(jié)果集拉取時默認用fetchSize1000當結(jié)果集很大但你又想一次性裝進List時JVM一直在累積數(shù)據(jù)看起來就像卡住。解決方法是先把stmt.setFetchSize(100)調(diào)小同時在SQL里加limit來限制規(guī)模其次要去看HS2日志或YARN頁面確認作業(yè)是在ACCEPTED還是RUNNING狀態(tài)。如果連的是同一套集群把hive.execution.engine切到tez往往能縮短調(diào)度時間但不要隨便在URL里加這個參數(shù)它屬于會話級設置需要顯式set。5.3 小文件問題JDBC寫入后如何避免HDFS小文件失控現(xiàn)象用JDBC循環(huán)寫了幾萬行后表目錄里出現(xiàn)數(shù)十個幾十KB的文件查詢時NameNode壓力變大跑MapReduce的map數(shù)也跟著爆炸。原因就是前面提到的“逐條insert into values”以及l(fā)oad data時直接丟入過多小文件。解決方向有三個第一批量裝載時先合并輸入文件例如在HDFS上把多段小日志合并成200MB以上的大文件第二用insert overwrite ... select ... distribute by ...作為轉(zhuǎn)換和合并的手段讓Reducer個數(shù)和數(shù)據(jù)分布匹配第三配置Hive的自動合并參數(shù)比如hive.merge.mapredfilestrue、hive.merge.size.per.task這些參數(shù)屬于“hive優(yōu)化小文件”的通用手段不只局限于JDBC場景。我的踩坑經(jīng)歷是做數(shù)據(jù)清洗任務時在JDBC里用了insert into ... values做全量回刷結(jié)果一個分區(qū)下多出幾百個小文件?,F(xiàn)在只要通過JDBC寫數(shù)據(jù)我都會確認目標是“一次一個作業(yè)”而不是碎片化插入。5.4 時區(qū)與類型轉(zhuǎn)換TIMESTAMP和DECIMAL的坑現(xiàn)象表里存的時間是2024-09-01 12:00:00通過JDBC讀到Java里卻變成了2024-09-01 04:00:00或者BigDecimal取出的標度比預期多幾位。原因通常有兩個Hive底層時間戳以UTC存儲JDBC連接時沒有指定timeZone驅(qū)動按默認時區(qū)轉(zhuǎn)換DECIMAL在Hive里是二進制格式JDBC驅(qū)動在getObject時可能返回一個帶大量尾數(shù)的BigDecimal。解決方法是URL里加timeZoneAsia/Shanghai并在Java側(cè)統(tǒng)一LocalDateTime解析對于DECIMAL顯式用rs.getBigDecimal(col).setScale(2, RoundingMode.HALF_UP)而不是直接用getObject。如果你還在為“為什么同一張表用Beeline和用Java讀出來不同”發(fā)愁第一時間去查連接串和時區(qū)而不是懷疑Hive數(shù)據(jù)被寫壞了。5.5 Kerberos與安全集群認證參數(shù)怎么給現(xiàn)象本地開發(fā)環(huán)境連測試HS2好好的一連接安全集群就報GSSException: No valid credentials provided或Authentication failed。原因是在Kerberos開啟的集群里HS2要求客戶端必須先拿到Ticket-Granting Ticket。解決方式分兩步啟動Java進程時帶上-Djava.security.krb5.conf/etc/krb5.conf在代碼里使用UserGroupInformation.loginUserFromKeytab完成登錄然后連接URL里寫明;principalhive/hostnameREALM;authkerberos。如果你不想寫代碼開發(fā)期可以先用kinit在本地獲取憑證再運行Java進程。一個常見的誤用是給noauth的集群也配上Kerberos參數(shù)這不會讓連接更安全反而會誘導驅(qū)動走錯誤的認證流程。判斷集群到底開沒開認證直接看HS2日志里的AuthType或Beeline用-u jdbc:hive2://host:10000/;authnoauth是否能連通用最小實驗做界定再去調(diào)整Java端。6. 進階把連接池、日志與驗證方法用起來6.1 用連接池管理Hive連接Hive連接并不“輕”一個Connection背后就是一個HS2會話HS2會為會話分配一組線程資源。如果應用只做低頻查詢直接用裸連接就夠了但如果要嵌入數(shù)據(jù)服務建議還是引入HikariCP這樣的連接池。配置時最大連接數(shù)不要照搬MySQL的50、100我會控制在510個因為真正的并發(fā)是HS2服務端線程不是連接數(shù)。HikariCP初始化時設置connectionTestQuery為select 1實際上Hive JDBC不一定支持這個語法但HS2會將select 1翻譯成MapReduce里的一個小任務代價很重。所以更合適的測試方式是validationTimeout短一點并且不用connectionTestQuery讓連接池只依賴setAutoCommit(false)這類輕量調(diào)用去檢測存活。每個集群規(guī)模、任務跑法不同最終還是需要壓測后再調(diào)整。6.2 驗證你的操作是否真正生效寫完“簡單操作”之后驗證環(huán)節(jié)比寫代碼更重要。我的習慣是每次都開著Beeline做對照。比如通過JDBC執(zhí)行create table后立刻在Beeline里show create table確認表結(jié)構(gòu)執(zhí)行l(wèi)oad data后用hdfs dfs -ls /user/hive/warehouse/ods.db/t_user_login/dt2024-09-01看文件塊大小和數(shù)量執(zhí)行查詢后去YARN的Application頁面看日志確認是Tez還是MapReduce以及各階段IO都跑完。還有一個很容易被忽略的驗證點用JDBC的isValid方法或者再執(zhí)行一條select 1來確認連接還活著但這在Hive上代價不小所以放一條真實的小查詢比isValid更有說服力。這套驗證習慣是從一次翻車里換來的。幾年前我在一個數(shù)據(jù)平臺項目里想當然地認為Hive JDBC和MySQL JDBC一樣可以批量更新事務數(shù)據(jù)結(jié)果用PreparedStatement循環(huán)插了一晚上第二天一查不僅性能慘不忍睹還留下了一堆小文件。后來我改變了做法凡是能用load data一次完成的絕不用循環(huán)insert凡是能在Beeline里先驗證的絕不在Java代碼里賭一把。希望這些經(jīng)驗和坑位清單能幫到你在Java JDBC連接Hive這條路上少走一段彎路。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
人妻操逼| 一点色成人网| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 精品网站:999WWW| 日本99热| 色色日本欧美| 婷婷五月天BBw| 亚洲在线综合| 91久久九色| 五月天桃色深爱网| 久久人人九九| 99热这里有精品| 99热精在线九九久久保| 99热婷婷| 高清不卡一区| 精品99视频| 97啪在线观看视频| 极品人妻VIDEOSSS人妻 | 欧美久久婷婷| 激情中文在线| 婷婷 伊人 久久| 色综合五月在线| 丁香五月欧美激情| 久热 91| 亚洲亚洲人成综合网络| 大香蕉520| 免费97碰碰| www色中色综合| 深爱五月激情网| 人妻视频在线| 狠狠色大香蕉| 无码yw| 91碰碰碰久久久久| 九九精品丁香花| 91久热| 激情图片婷婷| 激情婷婷五月| 五月色网| 99久视频| 99久久综合| 色五月超碰| 九九这里都是精品| 九九这里有精品| 亚洲情a| 九九婷婷五月天影视| 丁香午月AV中文字幕| 五月丁香av中文| www.99热这里精品| 五月丁香啪。| 色婷婷久久天天性爱| 91人人操人人看| 91丨九色丨熟女高潮| 人人爽天天爽| 99人妻碰碰久久久禁片| 淫视馆av三区| 超碰猛烈的性猛交| 日韩成人电影AV| 9久久婷婷国产综合精品性色| 丁香九月激情久久| 久99久在线观看| h亚洲| 久热伊人9| 日韩三十六页| 懂色av蜜臀av粉嫩av永陈冠希| 久久精品五月| 天天爽爽日日做做| 米奇影视资源婷婷狠狠色激情欧美五月丁香 | 深爱五月激情| 亚洲三A| 精品9197碰| 色色射| 五月婷丁香| 久色激情| 99精品丰满| 岛国资源站| 婷婷成人在线| 大香蕉九九| 色五月婷婷中文字幕在线观看| 6月丁香婷婷| 6月丁香婷婷| 五月婷婷丁香伦理网| 天天拍天天做视频| 丁香五月天中文字幕| 久久五月天色| 99亚洲视频| 五月丁香色综合| 综合色色五月| 玖玖在线视| 国产乱码久久| 亚洲欧美一区二区三区爱爱动图| 亚洲网视屏| 樱花99视频| 99 色色吧| 丁香五月天BBw| 草美女在线观看视频在线播放 | 天天色伊人| 激情综合五月色丁香婷婷| 婷婷基地成人五月天| 天天爱天天做天天爽| 色色色9| 婷婷五月色播| 国产精产国品一二三在观看| 色偷偷色婷婷| 天天爽天天透天天爱| 精品五月天| 五月天操逼网| 人人操人人妻| 夜夜嗨一区二区三区直播内容 | www.久久久.com| 五月天激情综合网站| wwwxxx五月婷婷小说| 99久久激情视频| 久草A片| 熟妇人妻中文字幕无码老熟妇| 超碰cap| 99a级片| 激情五月丁香综合蜜桃| 98永久精品| 99热婷婷| 精品网站:999WWW| 最新热中文字幕| 色婷婷六月丁香综合欲精品| 青青草国产亚洲精品久久| 丁香六月欧美| 亚洲激情综合五月婷婷啪啪| 亚洲六月婷婷| 五月丁香啪啪啪综合网| 婷婷网五月天| 偷拍九九热| 五月丁香另类图片| 99精品在线观看视频| 色久综合| 久久女婷| 日韩在线9| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 东京热伊人| 狠狠色综合网站| 亚洲秘 无码一区二区三区妃光/1| 欧美性生交XXXXX无码小说| 任你干嘛免费视频播放| www.成人婷婷综合| 久久婷婷青青| 五月天久久www| 五月激情婷婷在线| 4438成人电影| 66色在线日韩| 99热欧美精品| 色五月婷婷一二| 蜜桃成语时李时珍 免费| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 久久五月天精品视频| 六月丁香综合| 九九美女视频| 99热.com| 碰碰人人人| 天天爱天天做天天舔| 大香蕉精品视频| 自拍视频在线观看9| 丁香涩涩五月天| 天天爽天天爽| 婷婷激情六月综合| 亚洲av| 噜噜噜噜噜日本视频| 综合啪啪| 激情五月天婷婷图| 日本天天操| 久月婷婷| 婷婷六月色| 婷婷五月丁香av网站| 九九色色网| 九色在线观看91av| 婷婷六月丁香五月| 久久99大全| 夜夜爱网站| 婷婷五月精品| 精品人妻伦一二三区久久| 久久AAAA片一区二区| 丁香六月婷婷综合色| 激情五月天婷婷丁香| 丁香九月婷婷综合| 色婷婷综合网站| 精品婷婷五| 婷婷丁香五月亚洲17cao| 在线色色| 欧美大肥婆大肥BBBBB| 狠狠干综合| 色播综合| 99热这里只有精品96| 亚洲中文字幕在线观看| 丁香五月停停av| ai97re99一本| 丁香五月婷婷av| 六月撸婷婷| 99在线观看视频| 丁香五月天黄色片| 无码人妻少妇色欲AV一区二区 | 成人精品99| 爱狠射| 婷婷五月花| 九色视频91疯狂| 婷婷爱五月| 五月丁香网中文字幕| 久久婷婷影院| 五月丁香花激情综合网| 国产免费一区二区三区三州老师F1F1.CC| 激情综合99| 日本精品99| 91日本在线观看| 99re热精品在线视频| 99视频在线| 久久99久久99精品免视看婷婷| 久久综合26p| 亚洲第一精品网站| 丁香六月婷婷综合激情欧美| 99ri精品在线观看| 五月婷视频| 伊人久久婷婷| 午夜]香婷婷深深爱| 开心激情五月天网| 国产日批视频| 另类国产区| 色综合久久久久| 色婷婷综合中心| 青吴乐视频| 激情九九六月激情免费视频| 青青草婷婷综合五月| 99亚洲精美视频在线观看| 九九色综合| 午夜电影网VA内射| 包操45分钟网站| 色丁香五月婷婷综合久久| 大香蕉综合在线| 狠狠色五月| 99九九99九九九视频精彩| 国产毛片精品一区二区色欲黄A片| 开心网五月色婷婷| 深爱五月亚洲| 天天弄天天爽| 九九99精品| 日噜噜色| 秋霞AV吧| 伊人无码高清| www.夜夜操| 天天干天天插| 五月婷婷婷婷网| 激情综合综合综合| 丁香五月在线人妻| 欧洲毛片基地c区| 婷综合六月| 五月丁香啪啪| 婷婷五月天影院| 成人在线综合| 五月丁香啪啪网| 婷婷丁香成人网址| 婷婷丁香第一页| 久久五月视频| 99热久| 大香蕉Av在线| 91婷婷五月丁香碰| .comwww在线观看免费操| 另类少妇人与禽zOZZ0性伦| 色情五月婷| 五月天婷婷丁香社区| 婷婷亚洲五月丁香综合在线 | 五月天色综合| 久久久久久久人妻| 99热只有| 五月丁香自拍| 婷婷97碰碰| 有哪些A片网站| 婷婷五月天AV激情| 嫩草综合网| 欧美天天爽| 四虎成人精品永久免费AV九九| 色原狠狠综合| 97黑人精品区| 久热9| www.色婷婷.com| 色久99| 五月天啪啪网| 日韩精品99久久| 亚洲av电影在线| 北条麻妃九九九国产精品视频| 色婷婷激情| 五月丁香亭亭成人电影| 人人色人人摸人人看| 亭亭色色五月天| 色婷婷五月色| 99在线观看视频免费| 色综合com| 91狠狠综合网| 五月激情婷婷图片基地| 中文无码精品一区二区三区| 国产一级婬片毛片| 丁香六月成人| 久久久精品AV| 婷婷五月天视频| 激情六月天| 色婷婷色99国产综合精品| 操一区| 国产成人精品一区二三区熟女在线| 天天综合网站| 婷婷五月精品| 99a级片| 五月天色五月| 国产AV一区二区三区日韩| 成年人看Va免费视频| 精品99在线观看| 婷婷五月丁香久久| 美欧成人视频| 久久久久久久人妻| 五月丁香久久激情综合| 人人综合久| 中文字幕在线免费观看视频| 色狠狠伊人久久五月丁香| 亚洲男人的天堂婷婷色五月| 激情五月天社区| 五月综合丁香婷婷| 99这里只有精品| 成人国产欧美大片一区| 看全色黄大色大片| 99热九九这里只有精品10| 3p日韩网站视频| 欧美成人五月天| 色婷婷日本| 婷婷五月天丁香| 99热这里都是精品| 婷婷丁香五月91| 99久热在线精品| 森林影视大全,最好看的2019年视频| 99热这里只有的精品视| 大香蕉啪啪啪| 9精品国产在热久久| 天天综合色丁香| 九九热99re8热免费观看| 五月天影院婷婷在线观看| 五月婷婷激情久久| 色色婷婷丁香| 国产精品色婷婷久久久精品| 色狠狠伊人久久五月丁香| 激情五月综合久久| 成人精品一区二区三区四区五区 | 色婷婷导航| 99在线精品免费视频| 激情丁香五月AV| 五月天婷婷基地丁香| 99re在线这里只有精品视频首页| 久久综合性| 伊人久久婷婷五月综合97色| 久99热| 狠狠狠狠狠草| 五月激情六月丁香| 五月婷婷婷| 丁香五月婷婷色五月| 欧美激情综合色综合啪啪五月| 五月婷婷啪啪| 日良久久| 99热在线观看| 婷婷久久爱| 天天射影| 成人视屏在线观看| se99热久久一本| 狠狠狠激情网| 天天干天天干天天| 91操在线视频| 久久久久人妻| 五月丁香A片| 婷婷伊在线| 亚洲婷婷五月| 天天射色五月天| 婷婷五月俺要去| 久99久在线| 亚洲av成人一区二区电影在线| 涩涩涩,com| 久久婷婷久久| www.久久9| 精品成人无码A片观看香草视频 | 久久大国产香蕉| 青青热视频| 婷婷五月天在线观看| 日韩欧美成人一区二区三区| 九九爱看亚洲| 中文字幕丰满孑伦无码专区| 欧洲婷婷五月天| 婷婷99中文字幕| 欧美操我| 日本色爽| 亚洲色综久久五月| 超碰国产AV| 91精品久| 欧美婷婷精品激情| 六月综合婷婷开心伊人| 秋霞少妇AV网站| 欧美成性色| 99干日本| 色婷婷五月色| 色婷婷五月在线| www,setingting| 婷婷黄色五月天在线视频| 一月婷婷色色| 六月婷久久| 色婷婷视频在线| 成人AV播放| 久99久热只有精品国产99| av国产精品| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 色亚洲欧洲| 激情玖玖综合网| 26uuu亚洲欧美| 久久艹 五月天| 久久这里只有精品16| 99在线精品免费视频| 99无码免费视频| 欧美在线视频99| 夜夜人妻五月天| 9久精品| 丁香五月婷婷亚洲人| www.99视频| 五月婷婷丁香成人网| 综合网色| 婷婷激情丁五月| 99爱操| 九九99一区| 91综合色噜噜| 色欲天天综合| 99re这里只有精品国产99| 婷婷香蕉| 这里只有精彩亚洲视频推荐| 色哟哟性爱av| 99视频在线| 丁香成人综合| 久热爱大香蕉在线蜜臀悦色 | 99婷婷综合| 少妇达人正片在线播放_ikun_福利吧| 激情图片99| 操一区| 国产99美少妇| 天天肏天天舔AV| 亚洲中文乱字字幕在线永久| 任你草| 五月天激情小说| 色五月成人在线| 婷婷五月激情综合啪啪| 99精品在线| 久色姿源| 九九综合网色全集 | 欧美日韩一a.无| 色欲一区二区三区精品A片| 日日狠夜夜狠| 婷婷午夜精品久久久| 六月激情婷婷| 2025色婷婷| 九九99免费理论| 人妻内射一区二区在线视频| 99久视频| 蜜乳.comcom| 久久天堂女人| 色色亚洲视频| 99成人在线观看| 日韩免费乱轮网站| 久久日韩婷婷五月| 日日夜夜干| www,天天干| 婷婷色综合| 一级视频网址| 五月天成人免费视频| 国产婷婷五月天| 久久婷丁香五月| 国产偷人爽久久久久久老妇APP| 婷婷五月综合亚洲| 亚洲综合新99视频| 日本一毛片| 乱精品一区字幕二区| 婷婷色操| 99青青草| 五月社区丁香| 成人精品在线| 玖玖爱导航| 少妇性BBB搡BBB爽爽爽视頻| 97在线碰| 九九热精品视频| 色婷婷五月基地在线| 久久9999| 色婷婷AV久久| 色婷婷小说| 久久伦乱| 人人射人人高潮| 色婷婷六月激情| 日韩 中文 欧美| 久久免费少妇高潮99精品| 婷婷色色五月| 欧美99视频| 这里只有精品视频一区| 精品九九在线观看| 久久久网站| 91久久免费| 超碰婷婷色| 久久婷婷五月天| 青草五月天| www.激情五月天com| 狠狠色丁香五月婷巨| 免费看无码视频A级| 婷婷五月天免费99| 风流少妇A片一区二区蜜桃| 草草视频91| WWW.桔色成人.COM| 天天插天天日| 五月激情六月综合| 综合色激情| 激情亚洲色图片丁香综合| 深爱激情中文五月天av| 超碰成人电影| 久热成人| 亚洲精品国产成人AV在线| 久久人操-久草婷婷-成人AV| 日韩操啪| 五月丁香趴趴| 国内久久久精品99| 激情久久 婷婷| 色婷婷无吗| 91/九色黑人| 久久探花91swag| 日本一级黄色片。| 丁香六月丁香婷婷激情| 婷婷成人AV| 99热精品在线播放| 99免费| 日日夜夜久| 99re这里只有精品视频了| 天天 青草 丝袜制服 在线| 五月天 综合 在线| 婷婷色色播五月天| 婷婷亚洲在线| www、色色色| 牛牛碰免费| 久久婷婷五月天综合| 五月婷婷视频28| 天天视频亚洲| 国产亚洲色婷婷久久99精品91| 亚洲99精品欧美一区| 婷婷五月天电影区小说区| 午夜丁香五月天综合| 狠狠狠狠狠狠狠狠| 大天天伊人| 色综合丁香| 欧美色婷婷| 欧美日韩成人| 教师性爱毛片| 看全色黄大色大片| 五月花综合| 天天摸,天天爽| 婷婷激情丁五月| 噜噜色com| 婷婷五月天狠狠色| 激情色色色| 午夜天堂一区人妻| 久久99草五月婷婷| 91超级碰在线视频| 99er免费在线观看| 天天干天天射色综合| 天天插天天爽| 五月婷婷开心网| 99精品国产乱码久久久人妻| 4399精品一区二区| 六月99天天婷婷激情综合| 狠狠操狠狠爱| 热成人网| 色色五月婷| 色婷婷成人做爰A片免费看网站| 婷婷丁香红五月91C| 四色五月视频| 丁香五月狠狠在线观看| 深爱婷婷丁香五月激情| 九九热九九| 成人精品一区日本无码网 | caop在线视频| 开心色色五月天综合| 丁香五婷| 色爱99| 99热6这里只有精品| 中文字幕在线不卡| 婷婷5月久久综合网站| 99色在线观看视频| 夜夜爽日日躁| 操碰99| 精品爱欲五| 久久久久亚洲AV无码网影音先锋| 色情五月天se| 九九热10| 成人久碰| 人人爱干人人爱草| 99爱视频| 热热色色五月天婷婷| 91婷婷丁香五月| 96性爱视频| 日本一级特黄大片AAAAA级| 精品人妻伦九区久久AAA片| 丁香五月婷婷99| 欧美色骚婷婷五月天| 99性爱视频| 少妇真实被内射视频三四区| 色婷婷av在线| 天天婷婷| 五月天婷婷婷| www色婷婷久久综合久色| www.五月丁香| 婷婷不干网| 日本欧美在线| 久久九九国产精品怡红院| 92久久精品一区二区| 97人人做| 婷婷丁香18| 午夜无码熟熟妇丰满人妻| 亚洲愉拍99热成人精品| 亚洲综合五月天婷婷| 国产精品第一国产精品| 午夜大香蕉| 婷婷社区五月天| 中文字幕1区2区。| 狠狠草天天草| 国产一级片| 丁香五月婷婷色偷偷| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 亚洲成人噜噜| 乱乱av| 欧美群妇大交乱婬网| 五月婷婷色| 亚洲一二三网| 五月久久亚洲| 公的粗大挺进了我的密道| 67194成I人在线观看线路1| 色色网站在线| 亚洲激情六月| 人草人人| 色噜婷婷| 色狠狠色综合| 丁香五月色情av| 天天舔天天| 777精品久无码人妻蜜桃| 99视频只有精品| 成人在线日韩欧美| 免费在线观看欧美激情xx小视频| 精品9久| 99久久成人| 成人免费120分钟啪啪| 天天激情综合| 97福利视频| 一起草无码视频| 激情综合网五月激情| 亚洲中文字幕AV| 97久久人人操| 69热在线| 婷婷五月花| 五月婷婷伊人网| 中国女人内射6XXXXX| 色综合爱综合| 六月丁花香啪啪激情欧美| 五月综合激情综合久| 久草婷婷网| 热99re| 97人人妻人人艹| 99视频只有这里精品| 色吊操色妞| 色XX综合网| 久久玖玖综合| 99热婷婷| 美臀自射自家人妻| 亚洲综合色成丁香五月色| 人妻精品久久久久久| 九九中文色色| 9久热在线视频精品| 久久久91| 天天色情站| 思思热99在线| 综合色视频| 五月婷婷人人人操| 久热久色| 秋霞少妇AV网站| 五月天涩涩| 五月婷婷影| 婷婷五月天久久| 97深爱伊人综合| 中文字幕av久久爽| 超碰九九热| www色婷婷久久综合久色| 97超碰免费超级在线观看| 天天摸天天日天天舔| 五月婷婷激情日本| 五月香婷婷| 开心五月天激情| 99热高清在线| www.夜夜操| 精品皮股午夜AV| 91婷婷五月丁香碰| 91色色色| 狠狠五月激情丁香六月| 色五月成人| 91精品激情9| 另类小说色婷婷| 五月丁香综合啪啪啪啪啪| 久久婷婷丁香花综合网| 五月婷六月| 天天干天天日天天插| 99久久色| 97天堂| 色欲一二三| 中文字幕婷婷五月天| 91高潮喷水久久久久久久久 | 五月天婷婷五月| 99精品人人| 香蕉久久国产AV一区二区| 亚洲综合五月天婷婷| 这里只有精品日韩| 色色色色色色色色色色色色色五月天| 欧美婷婷日本| 丁香婷在线| 天天射综合网站| 亚洲第一成人AV| 日日杆天天| 五月六月婷| 激情五月天在线| 日韩精品一区二区亚洲AV观看| 99热精品在线在线| 中文字幕精品在线观看| 五月丁香婷庭在线| 久久久妻人人人| 欧美亚洲成人在线| 怎么样可以看免费的一级av| 成人在线精品| 久久久久这里只有精品| 亚洲成人电影aaaa| av九九| 欧美久人人| 日韩av变天就操逼不卡区| 五月婷亚洲精品AV天堂| 九九精品热| 99精品7| 丁香九月综合| 99激情网| 性爱人人网| 天天色2017| 日本一级一级一级一级| 九九碰九九爱97超| 99∨VTV| www色五月天| 加勒比色色| 97干在线| 丁香五月日韩| 九九人人自拍| WWW、日本色丁香、co m| 夜夜操加勒比| 色色99| 99精品在线| 婷婷五月天堂| 伊人婷婷色| 这里只有精品在线视频在线观看| 激情色情五月天| 99 这里只有精品| 4399在线观看免费高清电视剧| 九九精品自拍| 狠狠色噜噜狠狠狠狠综合| 五月丁香久久丝袜啪啪| 婷婷综合偷拍| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 激情伍月 欧美| 久久视屏这里只有久久| 这里只有精品视频222| 中美日韩成人在线| 激情五月婷| 91婷婷丁香五月| 91人人操| 亚洲情色一区| 99福利导航| 日韩色五月| 99日本在线| 婷婷午夜激情| 操99| www,8050,午夜三级| av九九| 欧亚洲在线高清视频| 九九av| 色五月婷婷婷婷婷婷婷婷婷婷| 91久久1118| 一起草av| 丁香色六月婷婷| 情婷婷五月天在线| 亚洲 在线 性爱 | 色五月噜噜| 9l视频自拍九色9l黑人| 激情五月天色色色| 亚洲AV无码成人精品区电影网| 9热在线视频| 婷婷五月天中文字幕| 97在线/亚洲| 六月丁香婷婷五月天| 婷五月丁香俺| 精品九九视频| 九九亚洲视频| 91九色精品| 婷婷五月综合激情| 午夜天堂一区人妻| ZpRSw| 色天堂97| site:hcxsz888.com| 激情五月综合免费| 久久99免费视频| 久久久久激情网| 色99在线视频| 大香蕉久久青青| 99色在线免费观看视频| 开心激情网五月天| 色婷婷成人做爰A片免费看网站| 性生生活大片又黄又| 国产特黄色精品一区二区三区精品无广告| 丁香五月天激情四射网络不好 | 狠狠操狠狠| 操97在线观看| 在线观看欧美| 欧洲精品欧洲情| 久久色这里只有精品| w婷婷五月婷婷w| 亚洲精品又粗又大又爽A片| yjzz亚洲国产| 成人在线不卡| 激情五月亚洲综合网| 狠狠高潮精品亚洲1| 亚洲九九夜夜| 九九色婷| 婷婷无码视频| 99色播| 五月婷婷AV| 精品夜夜澡人妻无码AV| 丁香六月激情毛片| 丁香六月AV| 色婷婷丁香五月在线观看| 五月天综合网| 色婷婷AV久久| 91狠狠色丁香婷婷综合久久精品| 久久这里99| 丁香婷婷五月天激情四射| 国产FREESEXVIDEOS性中国| 99视频在线啪| 玖玖在线资源视频| 四月婷婷五月丁香| 欧美性猛交 XXXX 乱大交| 99久精品| 国产九月婷婷| 久久九九综合| 26uuu精品国产| 国产精品色色| 久久久久久久久久久月丁| 五月婷婷深深爱爱| 丁香五月欧美午夜视频| 国产黄大片在线观看画质优化| 色色色区| 五月婷婷九月婷婷九月婷婷| 久久99热这里只有精品| 久久99精品久久久久久青青AR| 欧美婷婷五月无砖| 97人人操人人| av五月丁香婷婷网| 婷婷五月天亚洲天堂| 九九99免费理论| 天天色凹凸| 久久密臀婷婷| 亚洲中文丁香| 欧美色99| 色色婷婷婷丁香五月天| 91九色国产熟女| 婷婷日日天天| 九九99精品| 九九碰九九爱97超| 婷婷另类小说| 日韩中出视频| 天天综合天天做天天综合| 色综合激情| 成人在线日韩欧美| 五月天色婷婷网| 精品少妇人妻AV无码专区偷人| 激情综合五月丁香| 久re热视频| 免费碰碰视频久| 大香蕉久| 丁香五月首页| 超碰不卡在线| 五月香蕉网| 淫荡工a| 成人.在线日韩| 美女va| 九九免费视频| 性视频久久| 五月婷婷丁香五月| 欧美操综合| 99热无码首页| 久久婷婷五月综合色和| 久99久热只有精品国产99| 五月婷婷综合网| 人人亚洲| 99久久网站| 99热只有精品在线播放| 婷婷激情五月| 秋霞性爱AV| 97热视频| 9久热| 五月激情偷拍| jiujiu热在线视频| 这里只有精品视频99| 色啪综合| 色色网站| 久久综合激情五月天| 五月丁香婷婷基地| 思思视频久久| 99精品久久| 激情五月综合免费| 三十熟女| 可以直接看的AV网站| 九色成人AV在线| 色婷婷狠狠干芒果TV| 人人综合色| 蜘蛛女侠2003满天星免费观看| 丁香五月成人自拍| 天天骑天天操| 六月婷婷啪啪| 天天操B| 色噜噜狠狠色综合无码久久欧美| 九九热这里| 日韩好吊操| 亚洲精品国产A久久久久久| 久久这里都是精品视频| 99视频热99| 色婷婷丁香五月在线观看| 综合玖玖偷拍| 亚洲欧美综合7777色婷婷| 婷婷五月天最新综合你懂的 | 色综合天天天天做夜夜| 亚洲色五月婷婷| 丝袜激情网| 久久黄A片| 99热在线观看| 激情五月婷婷老师| 探花搜索结果 - 黄上黄| 碰碰91| 五月天婷亚洲天综合网综合| 综合AV网| 色色色色色色网| 色色丁香婷婷综合| 婷婷伊人| 色丁香影院| 国产ava| 色情成人五月天| 激情婷婷综合五月少妇| 99热欧美精品| 狠狠操狠狠| 亚洲丁香网| 激情久久久久久久久久| www.五月天| 免费视频这里只有精品| 操逼六区| 国产成人一区二区三区在线观看| 五月天色婷婷伊人网| 久久大香蕉视频| 色噜噜狠狠色综无码久久合欧美| site:publishdd.com| 九九精品亚洲| 五月天激情小说| 超碰1999| 日本三级黄色大片| 久草婷婷在线| 久久婷婷影院| 人人视频色| 草草操操| 天天干在线播放| 超碰免费大香蕉| 色婷五月丁香久亚洲| 秋霞AV美国| 色欲一区二区三区精品A片| 婷婷 丁香 精品| 色婷婷五月天激情在线播放| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 久操人妻| 97婷婷五月丁香| 丁香五月Av| 色爱五月天| 丁香 婷婷五月| 亚洲成人网站在线播放| 国产3p露脸普通话对白| 久久综合影院| 三级大香蕉网| 玖玖国产视频一区| 人人操操97| 丁香五月天激情综合| 色婷五月天| 开心五月深爱五月婷| 人人操91| 超碰在线观看caop| 成人免费120分钟啪啪| AA久久| 看久久性爱视频| 涩综合在线| 综合色网站| 欧美久久九九| 国产成人+综合亚洲+天堂| 色综合五月天| 精品色色色| 久久精品国产色| 99碰碰视频| 亚洲 成人 电影av在线观看| 噼里啪啦在线观看免费完整版视频 | 免费在线观看欧美激情xx小视频| 天天在线天天综合网色| 天天噜日日噜综合无码| 亚洲四色五月| av婷婷六月丁香社区在线观看| 六月丁香啪啪啪| 丁香五月欧美色综合| 五月天五月天成人网亭亭成人色网站| 亚洲第一色网站| 国产激情视频在线观看| 激情久久久久久久久| 美女爆乳18禁www久久久久久| 香蕉久久国产AV一区二区| 77799热| 伊人玖玖精品| 97操在线资源| 中文字幕不卡网站| 亚洲精品久久久久久久久久飞鱼 | 开心深爱激情网| 色综合天堂| 婷婷六月色| www.五月.com| 丁香涩涩爱| 欧美日本一区二区三区| 五月的丁香六月的婷婷| 五月色丁香综合| 丁香六月综合激情| 最新av在线观看| 激情五月婷婷视频一区二区三区| 色约约视频一区二区三区四区五区 | 丁香五月成人| 美日韩成人| 亚洲午夜AV| 婷婷综合网站| 99热这里只有精品55| 久热无码| 亚洲综合在线视频| 狠狠操综合| 久久婷婷伊人| 九月婷婷| 激情丁香五月| 六月丁香啪啪| 国产精品人成A片一区二区| www.夜夜操| 嫩草AV久久伊人妇女超级A| 久久99视频| 中文字幕成人| 五月丁香久久| 国产精品久久久久9999小说| 人妻内射一区二区在线视频| 蜜桃五月天| 久久人人做人人妻人人玩精品va| 国产精品99久久久久久久女警| 99这里有精品视频| 国产精产国品一二三在观看| 国产高潮A片羞羞视频涩涩| 99精品在线| 少妇被躁爽到高潮无码文 | 日韩成人网站精品久久大全| 日本天天综合| 精品色色网| 丁香六月婷婷综合在线| 91精品综合久久久久久五月丁香 | 无码毛片992367| sewuyuejiqingwang| 五月情涩综合婷婷| AV人人操| 色五月婷婷综合| 色播五月天激情| 日韩成人无码| 婷婷五月丁香国产| 日本99视频精品免费播放| 婷婷丁香九月| 日本本土色网第一区| 亚洲综合视频一下| 婷婷丁香成人五月天| 亚洲无码99| 五月香婷婷| 成人无码髙潮喷水A片| 日本综合99| 亚洲Av成人在线观看| 99ri精品| 伊人婷婷激情| 亚洲久久激情| 五月亭亭六月天| 国产真实乱了老女人视频| 九九色情网五月天| 六月婷婷激情图片| 南京搡BBBB搡BBBB| 色狠久| 日本久久婷| 五月天电影网| 久久丁香婷婷五月| 99久久99视频只有精品| 五月天激情综合10p| 婷婷五月综合体验看| 99超级碰免费视频| 丁香五月熟女| 中文字幕AV在线播放| 人人射av| 五月丁香婷婷爱| 五月天久久久| 人妻激情网| 五月天天天综合| 丁香五月亚综合图片| 五月天激情影院| 9色91视频| 99riAV国产精品视频| 色五月 激情婷婷 综合五月天| 99热最新| 99热啪啪| 丁香五月成人丝袜| 五月天婷婷色播综合在线| 99热激情| 无遮挡国产高潮视频免费观看| 婷婷激情五月视频| 2025最新亚洲激情在线| 天天日夜夜| 国产毛片精品一区二区色欲黄A片| 激情五月天99色| 五月婷无码| 九九综合伊人| 狠狠狠狠草草| 九九这里只这里只有精品| 国产亚洲色婷婷久久99精品91| 国精产品一区一区三区免费视频| 日韩日比视频| 五月婷婷婷婷婷婷艺术| 久久激情视频| 丁香五月 无码| WWW丁香五月| 欧美性爱中文字幕| 五月天丁香婷婷久久九| 99热这里是精品| 成年人丁香五月| 亚洲最大成人综合网720P| 国产99久久久| 这里只有精品视频一区| 99re这里只有精品国产99| 五月人妻婷婷视频| 亚洲精品白浆高清久久久久久| 91色噜噜狠狠狠狠色综合| 精品一区二区三区四区五区六区| 啪啪操超碰| 情婷婷五月天| 无码少妇高潮喷水A片免费| 久久久宗合| 九九热视| 婷婷五月激情欧美大胆视频| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 色天天综合| 亚洲精品V天堂中文字幕| 日韩成人av在线| 丁香五月婷婷五月| 婷婷久久爱| 久热最新视频| 日日夜夜干| 丁香五月天导航| 婷婷五月综激情| 吾爱AV导航| 99热无码| 九九综合影音先锋| 欧美99热| 日韩啪啪网| 激情av| 激情五月天婷婷| 日本情色一区二区| 婷婷丁香综合成人| 成人国产欧美大片一区| 99热99日…..| 五月丁香六月综合激情| 日本色色图| 97操视频| 五月天综合激情网| 亚洲精品视频电影| 五月丁香九九| 99热这里都是精品| 激情亭亭五月| 婷婷五月天社区| 婷婷影院欧美| 久久五月天婷婷| 99热999| 色情五月婷婷| HD久久精品视频| 五月婷婷真爱激情网| 五月丁香天堂| 亚洲第一第二网站| 噜噜五月天综合| 色色色色色色色色网站| 婷婷免费视频| 婷五月天| www.99精品视频| 亚洲精品在线视频| 影音先锋毛片网站| 丁香五月婷婷啪| 欧美日韩成人在线| 99热在线播放| site:minyis.com| 无码激情AAAAA片-区区| 欧美亚洲婷婷五月| 色天使久久综合| 人人爱国产| 99热线观看9| 超碰99久久| 欧美婷婷六月丁香综合色| 色噜噜婷婷| 深爱丁香激情| 99视频综合网| 五月婷婷五月色| 大香蕉五月天婷婷| 久色| 丁香婷五月| 色五月激情问网站| 日本婷婷五月天| 99啪啪视频| 九九热精品| wwwC0maV五月花| 婷婷性爱视频在线| www.99在线| 开心四月婷婷在线色播播| 久久99最新地址| 思思热精品在线视频| 五月丁香六月综合基地| 五月色网| 亚洲VA在线| 国内久久亭亭| 另类激情中文| 九色视频这里只有精品| 色吊丝av中文字幕| 欧美人人操| 婷婷五月天在线观看av| 婷婷六月成人| 六月丁香色色| 色五月久久成人婷婷| 97自拍视频网| 九九热av| 日本五月丁香| 欧美WW在线网| 91九色在线| ji'qi'luan'ren'lun| 婷婷色九月| 懂色av粉嫩av蜜臀av| 五月天停婷基地| www.激情五月天.com| 99热在线播放精品| 在线婷婷| 狠狠五月天婷婷激情网。| 久久精品91视频| 无码日本精品XXXXXXXXX | 婷婷亚洲五月| 久久亚洲婷婷综合色五月| 2022久久婷婷| 99热精品在线播放| 丁香五月天在线观看| 亚洲色9| 欧美日本99| 婷婷丁香五月综合| 狠狠色噜噜狠狠狠狠综合|