phoenixはschema対応hbaseのnamespaceを開きます

3362 ワード

schemaとnamespaceの対応関係を開く
hbaseのカスタムnamespaceを使用するdefaultだけでなくphoenixではschemaの概念に対応するが、デフォルトではオンではなくhbase-siteが必要である.xmlに次の構成項目を追加します.
    
      phoenix.schema.isNamespaceMappingEnabled
      true
    
    
      phoenix.schema.mapSystemTablesToNamespace
      true
    

クライアントがschemaを使用する
Javaクライアントでphoenixのjarパケットを介してphoenixにアクセスする場合、phoenixで持参したjarパケットを使用すると、エラーが絶えません.pom.xmlの構成は次のとおりです.
      
            org.apache.phoenix
            phoenix-core
            4.7.0-HBase-1.1
        

したがって、サービス側(hbaseのjarパッケージ)のバージョンと一致する必要があります.正しい方法は、サービス側jarパッケージをコピーし、以下のように構成することです.
      
            org.apache.phoenix
            phoenix-core
            4.7.0.2.5.0.0-1245
            system
            ${project.basedir}/lib/phoenix-server.jar
        

既存のhbaseテーブルエラーに対応するviewの作成
現在、namespaceとschemaの対応関係を開いた後、viewを作成して既存の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)

最初は、どこの構成に問題があるのかと思っていましたが、デバッグしてviewを作成した後にcreate view操作を行い、namespaceを招きました.tableはhbaseで必要なnamespace:tableフォーマットに変換されません.だから以上のエラーを報告するのはphoenixのバグのはずです.いろいろ検索して、以下のページを見つけて、私の考えを証明することができます:最も金の量の参考があります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
権限管理を開くhbaseの場合、phoenixにアクセスするユーザー権限を設定します.
hbaseでは以下の処理が必要です
grant 'user','C'     
grant 'user','XCRW','@SYSTEM'