2012-07-20 87 views
2

海我是hadoop和hive的新手。我的應用程序現在無法處理多個連接。當數字連接增加(超過4)時,它會變慢。任何人都可以弄明白。代碼如下。蜂巢連接

public static void setupDriver(String connectURI) throws Exception { 

    ObjectPool connectionPool = new GenericObjectPool(null); 
    ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
      connectURI, username, password); 
    @SuppressWarnings("unused") 
    PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(
      connectionFactory, connectionPool, null, null, false, true); 
    Class.forName(poolingDriver); 
    PoolingDriver driver = (PoolingDriver) DriverManager.getDriver(poolConnection); 
    driver.registerPool(poolName, connectionPool); 
} 



stmt = connection.createStatement(); 
String queryString = "select feed_date,count(feed_date) from twitter_stats where tweet like '%" + searchRequest.getWord() + "%' "; 
if (null != searchRequest.getFromDate()) { 
    queryString += "and feed_date >= '" + searchRequest.getFromDate() + "' "; 
} 
+0

你確定麻煩來自那裏嗎?我不是Hive Expert,但是從我的數據庫經驗來看,它最有可能是一個查詢概念問題,而不是Java問題。你可否請你發表你的要求? – 2012-07-20 15:56:02

+0

stmt = connection.createStatement(); String queryString =「從twitter_stats中選擇feed_date,count(feed_date),其中tweet like'%」+ searchRequest.getWord()+「%'」; (null!= searchRequest.getFromDate()){queryString + =「and feed_date> ='」+ searchRequest.getFromDate()+「'」; } – najeeb 2012-07-23 04:03:28

+0

這是好的讓雷米 – najeeb 2012-07-23 04:04:43

回答

1

你真的不應該使用由%開始的LIKE條件。在大多數情況下,這會導致性能問題! 試着壓制它,然後告訴我們它是否能解決你的問題。

這裏有一些線索:LIKE work-around in SQL (Performance issues),即使不處理這個問題。

+0

感謝讓它真的提高了速度。但連接問題依然存在。 – najeeb 2012-07-24 04:26:25

+0

不要猶豫,噸張貼您的錯誤堆棧。你有沒有想過要關閉你的連接? – 2012-07-24 10:30:56

+0

是連接已正確關閉。在java中可以處理多個連接的其他類嗎? – najeeb 2012-07-24 11:35:34

0

處理連接取決於Hive Metastore服務器。它應該安裝在強大的服務器上,或者如果您在虛擬機上工作,請嘗試增加虛擬機的內存或CPU。 (?) 或者,您可以在CDH 5.3支持的多服務器環境中使用兩個Hive Metastore Server服務器實例,並且可以使用兩個Hive Metastore Server服務器實例。 x和上面。