phoenix開啟schema對應(yīng)hbase中的namespace

開啟schema與namespace的對應(yīng)關(guān)系

如果使用了hbase中的自定義namespace,不僅僅使用default,那么在phoenix中與之對應(yīng)的是schema的概念,但是默認(rèn)并沒有開啟,需要在hbase-site.xml中增加以下配置項:

    <property>
      <name>phoenix.schema.isNamespaceMappingEnabled</name>
      <value>true</value>
    </property>
    <property>
      <name>phoenix.schema.mapSystemTablesToNamespace</name>
      <value>true</value>
    </property>

客戶端使用schema

我們在java 客戶端通過phoenix 的jar包進(jìn)行訪問phoenix時,如果使用的是通過phoenix自帶的jar包的話,會不斷的報錯。pom.xml配置如下:

      <dependency>
            <groupId>org.apache.phoenix</groupId>
            <artifactId>phoenix-core</artifactId>
            <version>4.7.0-HBase-1.1</version>
        </dependency>

因此,必須和服務(wù)端(hbase下的jar包)版本一致,正確做法是拷貝服務(wù)端jar包,配置如下:

      <dependency>
            <groupId>org.apache.phoenix</groupId>
            <artifactId>phoenix-core</artifactId>
            <version>4.7.0.2.5.0.0-1245</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/phoenix-server.jar</systemPath>
        </dependency>

創(chuàng)建view對應(yīng)到已經(jīng)存在的hbase表報錯

目前發(fā)現(xiàn)如果開啟namespace和schema的對應(yīng)關(guān)系后,創(chuàng)建view對應(yīng)到已經(jīng)存在的hbase表報錯:

Error: ERROR 505 (42000): Table is read only. (state=42000,code=505)
org.apache.phoenix.schema.ReadOnlyTableException: ERROR 505 (42000): Table is read only.
    at org.apache.phoenix.query.ConnectionQueryServicesImpl.ensureTableCreated(ConnectionQueryServicesImpl.java:1032)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl.createTable(ConnectionQueryServicesImpl.java:1415)
    at org.apache.phoenix.schema.MetaDataClient.createTableInternal(MetaDataClient.java:2180)
    at org.apache.phoenix.schema.MetaDataClient.createTable(MetaDataClient.java:865)
    at org.apache.phoenix.compile.CreateTableCompiler$2.execute(CreateTableCompiler.java:194)
    at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:343)
    at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:331)
    at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
    at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:329)
    at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1440)
    at sqlline.Commands.execute(Commands.java:822)
    at sqlline.Commands.sql(Commands.java:732)
    at sqlline.SqlLine.dispatch(SqlLine.java:808)
    at sqlline.SqlLine.begin(SqlLine.java:681)
    at sqlline.SqlLine.start(SqlLine.java:398)
    at sqlline.SqlLine.main(SqlLine.java:292)

起初,我以為是哪里配置有問題,經(jīng)過調(diào)試確實在創(chuàng)建view后又進(jìn)行了一次create view操作,導(dǎo)致了namespace.table轉(zhuǎn)換不成hbase中需要的namespace:table格式。所以報以上錯誤,應(yīng)該是phoenix的一個bug。
各種搜索后,找到以下網(wǎng)頁,可以佐證我的想法:
最有含金量的參考
https://community.hortonworks.com/questions/65172/views-on-existing-hbase-namespace-tables.html?childToView=65180#answer-65180
https://community.hortonworks.com/questions/97154/map-phoenix-view-to-existing-hbase-namespace-table.html
https://stackoverflow.com/questions/39974877/create-view-in-apache-phoenix-error-505

對于開啟權(quán)限管理的hbase,設(shè)置訪問phoenix的用戶權(quán)限

需要在hbase中做如下處理

grant 'user','C' 創(chuàng)建權(quán)限
grant 'user','XCRW','@SYSTEM'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • HBase那些事 @(大數(shù)據(jù)工程學(xué)院)[HBase, Hadoop, 優(yōu)化, HadoopChen, hbase]...
    分癡閱讀 4,107評論 3 17
  • Phoenix安裝配置 1.簡介 Phoenix最早是saleforce的一個開源項目,后來成為Apache基金的...
    Jeffbond閱讀 5,859評論 0 5
  • 前言 我們通過業(yè)務(wù)系統(tǒng)將爬蟲的數(shù)據(jù)寫入了HBase,這篇文章說說HBase的表結(jié)構(gòu),及在HBase上利用Phoen...
    IIGEOywq閱讀 6,583評論 0 5
  • 文/沐叁 每日寫作第46天。 最近寫東西有點隨意,除了認(rèn)真思索的幾篇文章,似乎和當(dāng)初的計劃偏離的漸遠(yuǎn)。 所以,我想...
    沐叁閱讀 339評論 2 0
  • 上世紀(jì)九十年代,我在福建電子廠結(jié)識了幾位十八九歲聰明麗質(zhì)的南方女孩,她們是寧化的黃莉華、建寧的葉麗萱、將樂的馬曉紅...
    湖西憶語閱讀 274評論 0 0

友情鏈接更多精彩內(nèi)容