java連線impala查詢大資料
這裡先簡單介紹下hive,Impala、HBase:
hive:
hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。Hive支援HSQL,是一種類SQL。
Impala:
Impala是Cloudera在受到Google的Dremel啟發下開發的實時互動SQL大資料查詢工具,Impala沒有再使用緩慢的Hive+MapReduce批處理,而是通過使用與商用並行關係資料庫中類似的分散式查詢引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分組成),可以直接從HDFS或HBase中用SELECT、JOIN和統計函式查詢資料,從而大大降低了延遲
HBase:
HBase是一個分散式的、面向列的開源資料庫,該技術來源於Chang et al所撰寫的Google論文“Bigtable:一個結構化資料的分散式儲存系統”。就像Bigtable利用了Google檔案系統(File System)所提供的分散式資料儲存一樣,HBase在Hadoop之上提供了類似於Bigtable的能力。HBase是Apache的Hadoop專案的子專案。HBase不同於一般的關係資料庫,它是一個適合於非結構化資料儲存的資料庫。另一個不同的是HBase基於列的而不是基於行的模式。
hive、impala最大的好處和共同點就是可以使用sql語句對habse的資料進行操作,這對於我們java開發人員減少了大量的工作量,而不用像專業的大資料運維人員那樣去寫指令碼。
專案是用mybatis來做持久層的,一開始就是想用mybatis來對映impala的查詢。再配置好資料來源和查詢語句後,用junit測試發現sql語句再執行過程中就報錯了,再排除資料來源、impala驅動、連線字串及mybatis的配置後發現依舊報錯,再經過幾天的折騰後問題依舊沒有解決,只能暫時放棄採用原生的JDBC去連線impala(因專案比較緊張,只能後面再研究,可能是mybatis暫不支援impala,後面有位同事也遇到同樣的問題)
如果有大牛在mybatis上連線impala成功的話請不吝賜教哈!~
配置impala連線池
<bean id="dataSourcePid" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
<property name="jdbcUrl" value="jdbc:impala://***"/>
<property name="user" value="" />
<property name="password" value="" />
<property name="driverClass" value="com.cloudera.impala.jdbc41.Driver"/>
<property name="minPoolSize" value="5"/>
<property name="maxPoolSize" value="30"/>
<property name="idleConnectionTestPeriod" value="600"/>
<property name="checkoutTimeout" value="30000"/>
<property name="maxIdleTime" value="600" />
<property name="acquireIncrement" value="10" />
</bean>
專案中配置了多個數據源,在使用impala查詢後需要切換資料來源到主資料庫
public class ApplicationUtil implements ApplicationContextAware {
private static ApplicationContext appCtx;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
appCtx = applicationContext;
}
public static ApplicationContext getApplicationContext(){
return appCtx;
}
public static Object getBean(String name){
return appCtx.getBean(name);
}
}
連線impala進行查詢
PreparedStatement state = null;
PreparedStatement stmt = null;
ResultSet rs = null;
Connection connection = null;
ComboPooledDataSource dataSource =null;
try {
dataSource = (ComboPooledDataSource) ApplicationUtil
.getBean("dataSourcePid");
connection = DataSourceUtils.getConnection(dataSource);
//查詢前先更新impala元資料
stmt = connection.prepareStatement("refresh pid.i_f_dwr_pnl_dist");
state=connection.prepareStatement(str.toString());
stmt.execute();
rs=state.executeQuery();
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
while(rs.next()){
Map<String, Object> rowData = new HashMap<>();
for (int k = 1; k <= columnCount; k++) {
rowData.put(md.getColumnName(k), rs.getObject(k));
}
list.add(rowData);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(rs != null){
rs.close();
}
if(state != null){
state.close();
}
if(stmt != null){
stmt.close();
}
if(connection !=null){
connection.close();
}
DataSourceUtils.releaseConnection(connection, dataSource);
} catch (Exception e) {
e.printStackTrace();
}
DataSources.setCustomerType("EXP");
}
相關推薦
java連線impala查詢大資料
這裡先簡單介紹下hive,Impala、HBase: hive: hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。Hive支援HSQL
MongoDB_Java連線mongo 使用Java多條件查詢mongo資料
在mongo shell中的查詢語句是這樣的.. db.user.find({"age":{"$gt":5,"$lt":14}})我們用Java連線mongo來實現. mongo庫中的資料 程式碼
Java連線MySQL查詢資料
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;
2018年 Java程式設計師學習大資料最佳之路!
隨著大資料時代的到來,有很多Java程式設計師想要轉行大資料。 不得不說,大資料行業可以說是為Java程式設計師量身打造的一個朝陽行業?為什麼要這麼說呢? 因為Java工程師轉型大資料具有天然進階優勢,不僅僅是前景和薪資等。技術層面來說,大資料使用的Hadoop(在分散式伺服
用JAVA連線SQL實現更新資料
在程式碼中更新資料 <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql.*" pageEncoding="UTF-8"%> <!DOCTYPE html>
用JAVA連線SQL實現插入資料
直接由程式碼來決定插入的資料。 <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql
用JAVA連線SQL實現刪除資料
刪除一條資料 <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql.*" pageEncoding="UTF-8"%> <!DOCTYPE html> &l
使用python連線mongodb查詢指定資料爬取用txt or excel儲存
import pymongo import csv import json import sys import importlib importlib.reload(sys) import xlwt from pymongo import MongoClient 該導的先導進來 mongo_
大資料初學者怎樣學習 或Java工程師怎麼轉大資料?
大資料怎麼學,java怎麼轉大資料,今天就給大家分享一下。 大資料初學者怎樣學習 或Java工程師怎麼轉大資料 大資料現在很火很熱,但是怎麼學習呢?下面我給大家分享一下: 首先給大家普及一下大資料相關知識大資料的4大特徵: 1.資料在體量方面很大,比如說文字,有各種各樣的
Java開發想嘗試大資料和資料探勘,如何規劃學習?
大資料火了幾年了,但是今年好像進入了全民大資料時代,本著對科學的鑽(zhun)研(bei)精(tiao)神(cao),我在17年年初開始自學大資料,後經過系統全面學習,於這個月跳槽到現任公司。 現在已經從之前的java後端開發正式轉大資料開發,專案資料50T,日均資料增長2
MySQL單表已使用索引但查詢大資料結果時慢的解決辦法
目前做的專案使用MySQL資料庫,其中有張表包含近1000萬條記錄,表結構如下: Field Type Comment id int(11) NOT NULL 主鍵(PK) year int(4) NULL
JAVA架構師課程(大資料,分散式事物解決方案,大型網際網路專案,大型金融專案,高併發叢集解決方案)實戰開發[技術 activeMQ,zookeeper,http,支付,團購,dubbox,stom]
在IT圈子裡,真正達到軟體架構師能力和水平的,一般的年薪在30-50w,甚至50w+,資深的或者高階的架構師,年薪在50-80萬,水平更高的,薪水也就更多了,可以稱得上是金領了。 因此,一直以來,有很多朋友都在朝軟體架構師這個方向努力發展。但由於沒有人領路,一些朋友
2018年,Java程式設計師轉型大資料開發,是不是一個好選擇?
近日網上有一篇關於Java程式設計師職場生存現狀的文章“2017年 Java 程式設計師,風光背後的危機”,在Java程式設計師圈子裡引起了廣泛關注和熱議。 2017年,Java 程式設計師面臨更加激烈的競爭。 不得不承認,經歷過行業的飛速發展期,網際網路的整體發展趨於平
java連線MySQL資料庫 json資料前後端互動
先在下圖資料夾中匯入相應的jar包,其中第一個紅框中的是使用json資料需匯入的7個包,第二個紅框是用JDBC連線MySQL資料庫必須的包。 連線MySQL的工具類: package com.XXXXXX.util; import java.sql
java連線資料庫並顯示資料
1. 匯入jdbc包 java要連線MySQL資料庫需要用到JDBC工具(mysql-connector-java-5.1.39-bin.jar),這是一個jar包,不同的資料庫對應不同的jar包,這裡用的是MySQL資料庫jar包,匯入很簡單,滑鼠對專案右擊 - B
有java基礎, 想學習大資料, 該怎麼開始? 以下是我的疑惑
hadoop和spark都需要學習的! 如果你有JAVA基礎上手會更容易一些,因為學大資料前期的基礎課程就是java和linux.既然你有java基礎就省去了學習者部分課程的基礎,而且上手會容易很多! 再說說還需要學習哪些大資料技術,可以按我寫的順序學下去。 Hadoop 這是
Java程式設計師轉大資料職位的學習路線圖分享!
隨著網際網路事業的蓬勃發展,程式語言越來越火爆。Java工程師收入高、業內需求量大,備受人們青睞。不過隨著大資料的爆發,很多Java工程師想抓住這一趨勢,轉型大資料方向。那麼,Java程式設計師轉大資料工程師容易嗎?該如何學習呢? Java程式設計師轉大資料工程師有很好
java連線neo4j查詢,基於driver
**下面是java程式碼** --------- public class Neo4jDrivertest { // 驅動程式物件是執行緒安全的,通常是在應用程式範圍內提供的。 Driver driver; public Neo4jDrivertest(String uri,
java程式設計師的大資料之路(5):HDFS壓縮與解壓縮
背景 好久沒有更新了,原因是公司專案上線,差點被祭天。在這種驚心動魄的時候還是要抽時間做一點自己喜歡做的事情的,然而進度比預期慢了許多。 正式開始 接下來就開始記錄最近的學習成果啦! 在Hadoop叢集中,網路資源是非常珍貴的。因此對檔案進行壓縮是非
java連線impala資料庫
<span style="font-family: Arial, Helvetica, sans-serif;">package com.boco.impala;</span> import java.sql.Connection; import