1

私のユースケース: ESB で構成されたストリームから BAM にデータをプッシュし、「ガジェット生成ツール」を使用してレポートを作成します</p>

エージェントをプロキシ サービスに追加した後、ESB から BAM にストリームを公開すると、問題なく動作しました。

ストリームから、[Analytics] -> [Add] 画面を使用してテーブルを作成しました。同じ画面から選択して結果を表示できるため、テーブルは持続しているようです。

今、ガジェット生成ツールを使用してダッシュボードを生成しようとしていますが、jdbc 接続は正常に機能していますが、テーブルがどこにもありませんが、テーブルは利用できません。

Analytics - >画面の追加から実行される分析テーブルのスクリプト

CREATE EXTERNAL TABLE IF NOT EXISTS CREDITTABLE(creditkey STRING, creditFlag STRING, version STRING)
  STORED BY 'org.apache.hadoop.hive.cassandra.CassandraStorageHandler'
  WITH SERDEPROPERTIES ( "cassandra.host" = "127.0.0.1" , 
    cassandra.port" = "9163" , "cassandra.ks.name" = "EVENT_KS" ,
    "cassandra.ks.username" = "admin" ,
    "cassandra.ks.password" = "admin" ,
    "cassandra.cf.name" = "firstStream" ,
    "cassandra.columns.mapping" = ":key,payload_k1-constant, Version" );

次のデータベースでテーブルを探してみました:

jdbc:h2:repository/database/WSO2CARBON_DB;AUTO_SERVER=TRUE
jdbc:h2:repository/database/metastore_db;AUTO_SERVER=TRUE
jdbc:h2:repository/database/samples/BAM_STATS_DB;AUTO_SERVER=TRUE

カスタム db 構成を行っていません。

4

2 に答える 2

0

ガジェット生成ツールに表が表示されないのはなぜですか?

Hive スクリプトを使用して作成したテーブルは Casandra Distributed データベース テーブルであり、テーブルを検索するときにガジェット生成ツールで指定した参照は h2 RDBMSデータベース テーブルからのものでした。

以下は、WSO2 でそのまま使用できる h2 RDBMS データベースへの参照です。

jdbc:h2:repository/database/WSO2CARBON_DB;AUTO_SERVER=TRUE
jdbc:h2:repository/database/metastore_db;AUTO_SERVER=TRUE
jdbc:h2:repository/database/samples/BAM_STATS_DB;AUTO_SERVER=TRUE

解決策 -----ガジェット生成ツールに一覧表示されたテーブルを取得するにはどうすればよいですか?

ガジェット生成ツールに一覧表示されたテーブルを取得するには、Hive スクリプトを広範囲に使用して、次の 3 つの手順を完了する必要があります。

  1. 私の場合、データが ESB からプッシュされる Casandra データ ストリームの Hive テーブル参照を作成します。

    CREDITTABLE(payload_creditkey 文字列、payload_creditFlag 文字列、payload_version 文字列) が 'org.apache.hadoop.hive.cassandra.CassandraStorageHandler' WITH SERDEPROPERTIES ( "cassandra.host" = "127.0.0.1" , "cassandra. port" = "9163" , "cassandra.ks.name" = "EVENT_KS" , "cassandra.ks.username" = "admin" , "cassandra.ks.password" = "admin" , "cassandra.cf.name" = "firstStream" , "cassandra.columns.mapping" = ":key,payload_k1-constant, Version" );

  2. Hive スクリプトを使用して、Casandra ストリームからデータをコピーする H2 RDBMS スクリプトと参照を作成します。

    'org.wso2.carbon.hadoop.hive.jdbc.storage.JDBCStorageHandler' TBLPROPERTIES ('mapred.jdbc.driver.class' = 'org.h2.ドライバー'、'mapred.jdbc.url' = 'jdbc:h2:C:/wso2bam-2.2.0/repository/samples/database/BAM_STATS_DB'、'mapred.jdbc.username' = 'wso2carbon'、'mapred.jdbc .password' = 'wso2carbon' , 'hive.jdbc.update.on.duplicate' = 'true' , 'hive.jdbc.primary.key.fields' = 'creditFlg' , 'hive.jdbc.table.create.query ' = 'CREATE TABLE CREDITTABLE_newh2(creditFlg VARCHAR(100), version VARCHAR(100))' );

  3. Casandra から H2[RDBMS] にコピーされるデータを使用して、Hive クエリを記述します。

    上書きテーブルを挿入 CREDITTABLEh2summary select a.payload_creditFlag,a.payload_version from CREDITTABLE a;

これを行うと、ガジェット生成ツールでテーブルを表示できましたが、渡した JDBC URL 値で H2 データベースへの参照を絶対に変更する必要もありました

観察:

テーブルを RDBMS データベースにコピーしなくても、ガジェット生成ツールが Casandra Stream を直接指すことができるかどうか疑問に思っていました。

于 2013-03-24T10:15:36.593 に答える
0

試しましたjdbc:h2:repository/database/samples/WSO2CARBON_DB;AUTO_SERVER=TRUEか?また、貼り付けたのは Cassandra Storage Definition で、おそらく出力を永続化するのではなく、入力を取得するために使用されます。完全なハイブ クエリを指定すると、問題をさらに把握するのに役立ちます。

于 2013-03-23T02:02:55.403 に答える