1

サクサク使いました。cassandra 列ファミリーは、Hive テーブルに自動的にマップされます。
ただし、列ファミリーのデータ型が timeuuid の場合、Hive テーブルでは読み取ることができません。

たとえば、次のコマンドを使用してハイブに外部テーブルを作成し、列ファミリーをマップしました。

Hive > create external table A (rowkey string, column_name string, value string) 
     > STORED BY 'org.apache.hadoop.hive.cassandra.CassandraStorageHandler'
     > WITH SERDEPROPERTIES (
     > "cassandra.columns.mapping" = ":key,:column,:value");  

cassandra でカラム名が TimeUUIDType の場合、Hive テーブルで読み取り不能になります。

たとえば、cassandra 列ファミリーの行は次のようになります。

RowKey: 2d36a254bb04272b120aaf79d70a3578  
        => (column=29139210-b6dc-11df-8c64-f315e3a329d6, value={"event_id":101},timestamp=1283464254261)

列名は TimeUUIDType です。

ハイブ テーブルでは、次の行のようになります。

 2d36a254bb04272b120aaf79d70a3578    t��ߒ4��!��   {"event_id":101}

そのため、Hive テーブルでは列名を読み取ることができません。

4

1 に答える 1

2

これは、自動テーブル マッピングの既知の問題です。timeUUIDType で最良の結果を得るには、$brisk_home/resources/hive/hive-site.xml: "cassandra.autoCreateHiveSchema" で自動マッピング機能をオフにします。

ハイブにテーブルを手動で作成します。

于 2011-08-05T15:46:51.173 に答える