閱讀276 返回首頁    go 阿裏雲 go 技術社區[雲棲]


MaxCompute JDBC 2.2 發布說明

簡介

MaxCompute JDBC 2.2正式版已於2017年2月24日正式發布。

github地址:https://github.com/aliyun/aliyun-odps-jdbc/releases/tag/v2.2

MAVEN依賴:

<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-jdbc</artifactId>
    <version>2.2</version>
</dependency>

在此之前,MaxCompute JDBC最新的兩個版本分別是v.1.9.1穩定版和v.2.0 beta版,而v.2.0 beta 之所以沒有發布正式版,也是因為其依賴的服務端版本當時尚未對外發布。如今隨著MaxCompute新版的對外發布,MaxCompute JDBC 2.2版也正式發布了。

相比於v.1.9.1,v.2.2在易用性、性能以及兼容性方麵都有了更好的提升,本文將對其改進與差別做一下簡要的說明。

易用性方麵

我們在2.X中對配置做了一些麵向易用性的調整,這部分具體可以參看《MaxCompute JDBC 2.0 beta中的一些變更說明》一文,而相比於2.0 beta,在2.2正式版中,我們又新增了tunnel_endpoint配置項,其URL與Property兩種配置方式的key都為tunnel_endpoint。可用於為tunnel單獨指定endpoint,從而覆蓋掉默認自動路由的配置內容。

性能方麵

在v.1.9.1中,executeQuery一個select查詢到獲得結果集ResultSet背後的實現是相當低效的。大致的實現邏輯是會通過create table xxx as select …將查詢結果集先灌入一張臨時表,然後通過tunnel從該臨時表下載結果集,最後再drop掉該臨時表,其間對於臨時表的DDL操作都需要訪問底層meta存儲,而這些操作的開銷本是可以避免的。在v.2.2中,MaxCompute引入了一個叫做InstanceTunnel的新組件,其可用於直接下載一個ODPS Instance的查詢結果集,而無需為這些結果集創建臨時表,使性能得到了較大的提升。

兼容性方麵

在v.1.9.1中,MaxCompute JDBC僅支持原ODPS固有的幾種老的數據類型,即bigint、boolean、double、varchar、datetime以及decimal。針對MaxCompute 2.0開始對Hive數據類型的兼容,MaxCompute JDBC 2.2也配合該功能對新類型做了兼容,這些類型包括void、bigint、string、datetime、double、boolean、decimal、array、map、struct、int、tinyint、smallint、date、timestamp、float、char(n)、binary、varchar、interval_year_month以及interval_day_time。但是具體的使用需要配合你的project的配置來看,因為這些MaxCompute的新功能是需要選擇性打開的。

另外,我們對

execute ("set x.y.z=abc")

這類flag的生命周期也作了調整,在v.1.9.1中,其生命周期是statement級別的。而在v.2.2中,將被擴大到connection級別。這樣一來,同一connection隻需第一次創建statement時設置一次set flag,後續這些flag將對跨statement的操作一直有效。

而對於業界的常見工具,2.2也有了更好的支持,可以參看以下幾篇文章來獲取集成相關工具的最佳實踐。
《通過Apache Zeppelin 快速實現數據可視化》
《借力QlikView玩轉數據分析》

總結

如果你在使用MaxCompute JDBC過程中遇到任何疑問或需求,歡迎向我們反饋。你可以在我們的github中給我們留言或新建issue。當然,我們更歡迎支持MaxCompute JDBC的社區朋友向我們貢獻代碼,幫助我們一起更快更好的健康發展。

歡迎加入MaxCompute釘釘群討論

03ea92a4c1fbb04d443ff8f015c957815055111e

最後更新:2017-04-01 16:39:46

  上一篇:go 中信集團:集團雲,探索互聯網+轉型路徑
  下一篇:go 數據工作本質:從業務中來,到業務中去