2012-04-04 11 views
5

, bizim satırları ortada bir sekme ile anahtarlı olacağını kararİçinde bir sekme bulunan bir hbase kabuk satırını nasıl belirleyebilirim? Örneğin</p> <pre><code>item_id <tab> location </code></pre> <p>: Bizim sonsuz bilgeliğine

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

Hbase Shell kullanarak, çünkü bir get komutu gerçekleştiremiyor Sekme karakteri, giriş satırında düzgün yazılmaz. Başarısız olarak,

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

'u denedik. Ne yapmalıyız?

cevap

10

İkili değerler için aynı sorunu yaşadım: \ x00. Bu benim ayırıcımdı. İkili değerleri kabul etmek kabuk için

, çift tırnak (") içinde sağlamanıza gerek Ailesi yerine tek tırnak (') Tablom 'MyKey '

koymak.''': Niteleyici', "\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x06Hello kabuğundan" sekme kodlanmış ediliyor nasıl

Kontrol, benim en iyi bahis o UTF8 bu kadar kodlanmış olurdu ASCII tablosu, bu "000001 \ x09http: //www.url.com/page" olacaktır.

Bir yan notta, sen Ayırıcınız için boş karakter kullanın, taramada size yardımcı olacaktır.

+0

Bu HBase kabuğunda karakterleri kaçan genel soru adresleri, özellikle de iş gibi görünüyor. Yaptığımız şey yerine, bizim anahtarlarımızı md5 kullanıyorduk ve bunu kullanarak, sadece çok sıkıcı anahtarlar (tüm onaltılık karakterler) sağlamakla kalmıyor, aynı zamanda tüm bölgeleri güzel bir şekilde vurmak için masamıza yayıyor. – whiterook6

0

Sekme karakterini değiştirebileceğinizi umarız. :) Bu, Harita Azaltma işlerinin bir sınırlayıcı olarak sekmeyi kullanmasından ve bir sınırlayıcı olarak bir sekme veya boşluk kullanmanın genellikle kötü bir fikir olduğundan, bu kötü bir fikirdir.

Çift kolon (: :) sınırlayıcı olarak kullanabilirsiniz. Ama bekleyin, URL’de URL’de çift kolon varsa ne olur? Peki, URL'yi HBase'e depoladığınızda URL'yi kodlayın - bu şekilde, standart bir sınırlayıcınız vardır ve anahtarın URL kısmı sınırlayıcıyla çakışmaz. Python

:

import urllib 

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

rowkey = item_id + DELIMITER + urlkey 
+0

Ekibim, sekmesinde sekmeleri bulunamayacağımız veriler için, her zaman HBase'de sınırlayıcı olarak sekme kullanır. Harita Azaltma veya başka bir şeyle ilgili sorun yok. – Tony