apach hadoop2.6 集群利用Phoenix 4.6-hbase 批量導入並自動創建索引


基礎環境:

1、安裝apach 版本hadoop2.6

2、部署hbase1.0.0

3、下載phoenix-4.6.0-HBase-1.0。下載地址(http://mirror.nus.edu.sg/apache/phoenix/phoenix-4.6.0-HBase-1.0/bin/phoenix-4.6.0-HBase-1.0-bin.tar.gz)

4、phoenix 集成HBase : 將hoenix-4.6.0-HBase-1.0-server.jar拷貝到每一個RegionServer下的hbase lib目錄下

配置hbse-site.xml 文件

在hbase-site.xml加入如下配置

  <property>
          <name>hbase.regionserver.wal.codec</name>
            <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
            </property>
                    <property>
                      <name>hbase.regionserver.wal.codec</name>
                        <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
                        </property>

<property>
  <name>hbase.region.server.rpc.scheduler.factory.class</name>
    <value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory</value>
      <description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
      </property>

<property>
  <name>hbase.rpc.controllerfactory.class</name>
    <value>org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory</value>
      <description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
      </property>

<property>
  <name>hbase.coprocessor.regionserver.classes</name>
    <value>org.apache.hadoop.hbase.regionserver.LocalIndexMerger</value>
    </property>

<property>
  <name>hbase.master.loadbalancer.class</name>
    <value>org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer</value>
    </property>
    <property>
      <name>hbase.coprocessor.master.classes</name>
        <value>org.apache.phoenix.hbase.index.master.IndexMasterObserver</value>
        </property>

否則在創建索引的時候會出現如下錯誤:

java.sql.SQLException: ERROR 1029 (42Y88): Mutable secondary indexes must have the hbase.regionserver.wal.codec property 
set to org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec in the hbase-sites.xml of every region server tableName=INDEX_CUSTOM

 

5、進入phoenix 如下

6、創建表和索引

CREATE TABLE IF NOT EXISTS USPO (
state CHAR(2) NOT NULL,
city VARCHAR NOT NULL,
population BIGINT CONSTRAINT my_pk PRIMARY KEY (state,city));

create index index_pupulation on population(city,state);

查看表是否創建成功:

 

7、將測試數據上傳到hdfs 上:

uopu.csv
NY,New York,8143197
CA,Los Angeles,3844829
IL,Chicago,2842518
TX,Houston,2016582
PA,Philadelphia,1463281
AZ,Phoenix,1461575
TX,San Antonio,1256509
CA,San Diego,1255540
TX,Dallas,1213825
CA,San Jose,912332

8、執行命令:

hadoop jar /home/hadoop/phoenix-4.6.0-HBase-1.0-bin/phoenix-4.6.0-HBase-1.0-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool -t uspo -i /phoenix/uopu.csv  -z node3,node4,node7:2181

會執行Mapredue過程

9、查詢數據:

10、查詢hbase數據

問題:

發現查詢phoenix 上的uspo 數據是空的。

 本文參考地址:https://phoenix.apache.org/secondary_indexing.html


免責聲明!

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



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