2012-04-04 19 views
5

が、私たちは私たちの行は、中央のタブでキーすることを決めたhbaseシェルにタブがある行キーを指定するにはどうすればよいですか?例えば</p> <pre><code>item_id <tab> location </code></pre> <p>::私たちの無限の知恵で

000001 http://www.url.com/page 

HBaseのシェルを使用して、我々は理由getコマンドを実行することはできませんタブ文字は入力行に正しく書かれません。試しました

get 'tableName', '000001\thttp://www.url.com/page' 

成功しません。私たちは何をすべき?

答えて

10

バイナリ値には同じ問題があります:\ x00。これは私のセパレータだった。あなたのバイナリ値を受け入れるためのシェルについて、あなたは二重引用符( ")でそれらを提供する必要が

『MYKEY 『家族の代わりに単一引用符の(『)MyTableという

プット。』』』:修飾子」、 "\ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ x06Helloシェルから"

あなたのタブがエンコードされているかを確認し、私の最善の策は、それがUTF8からそうエンコードされているということでしょうASCIIテーブルの場合、これは "000001 \ x09http://www.url.com/page"になります。

サイドノートでは、セパレータにヌル文字を使用すると、スキャンに役立ちます。

+0

これは、HBaseのシェルで文字をエスケープの一般的な質問に対処し、特に以来、動作しているようです。私たちがやり遂げたことは、代わりにキーを作成して使用することでした。非常に退屈なキー(すべての16進文字)を提供するだけでなく、すべての地域をうまく攻撃するためにテーブルに広げました。 – whiterook6

0

希望すれば、タブ文字を変更できます。 :)マップリデュースジョブはタブをデリミタとして使用し、タブやスペースを区切り文字として使用するのは一般的には悪い考えだから、それは悪い考えです。

デリミタとして二重コロン(:) :)を使用できます。しかし、URLにダブルコロンがある場合はどうしたらいいですか?さて、URLをurlencodeでHBaseに保存すると、標準の区切り文字があり、URLの部分は区切り文字と競合しません。 Pythonで

import urllib 

DELIMITER = "::" 
urlkey = urllib.quote_plus(location) 

rowkey = item_id + DELIMITER + urlkey 
+0

私のチームはHBaseで常にタブをデリミタとして使用しています。 Map Reduceや他の何も問題はありません。 – Tony

関連する問題

 関連する問題