hbase 結合phoenix 二級索引的建立(由於習慣不好引起的慘案)


網上博客里面有許多文章關於怎么建立二級索引的原理及方法,我就不復述了,有需要的可以看看下面這些博客,挺好的

轉至:https://www.cnblogs.com/haoxinyue/p/6724365.html

   https://www.cnblogs.com/mario-nb/p/6350266.html?utm_source=itdadao&utm_medium=referral

在這里我想強調的是,當我們的hbase表數據非常大時,測試大概5000萬以上的數據建二級索引就會遇到連接超時的問題

當然我們也可以調整連接時間如下:

 

在客戶端配置文件hbase-site.xml中,把超時參數設置大一些,足夠build索引數據的時間。

<property> <name>hbase.rpc.timeout</name> <value>60000000</value> </property> <property> <name>hbase.client.scanner.timeout.period</name> <value>60000000</value> </property> <property> <name>phoenix.query.timeoutMs</name> <value>60000000</value> </property>

這種方式顯然看起來就不太友好

所以,我們就想到了用異步索引的方式去建立


  

照着網上的方式:興高采烈的去開干了,在linux輸入以下命令:
${HBASE_HOME}/bin/hbase org.apache.phoenix.mapreduce.index.IndexTool
  --schema MY_SCHEMA --data-table MY_TABLE --index-table ASYNC_IDX
  --output-path ASYNC_IDX_HFILES
結果直接就報錯了:

它竟然說我的索引不是數表的索引,我當時就蒙了,這是咋回事呢?馬上跑到phoenix client去查看,分明就是它的索引啊  ,可以通過命令查看

select TABLE_NAME,DATA_TABLE_NAME,INDEX_TYPE,INDEX_STATE,INDEX_DISABLE_TIMESTAMP from system.catalog where INDEX_TYPE is not null;

那又是咋回事啊,想想是不是建索引出問題了,遂不信邪的再一次實驗,繼續出錯,錯誤如出一轍,正當我准備放棄的時候。突然發現這好像有些不對,

我的表分明是小寫的t33,咋它說我的索引表卻不是T33的index呢,是不是這個IndexTool有某種方式,將所有的表都轉化為大寫的呢,還是它只認識大寫的表

接下來我就創建了一個大寫的表去建索引,果然這次並沒報錯誤,至於具體是哪種原因,沒找到方法去研究。

 

結論:平時總喜歡建小寫的hbase表,因為大寫的看着別扭,這不自己把自己坑了幾天,過程用同步索引都因為超時等各種原因,導致失敗多次,讓我哭會。。。。

大家又遇到這個問題么?

 

 
        
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM