我正在運行map-reduce作業,現在我想將值輸入到hbase中。我將map-reduce作業的值通過stdin進行流式處理,並且有一個python腳本,用於插入(放入)happybase以上的行。從python(happybase)寫入hbase表格
我遇到了各種各樣的問題,從python做放。據我所知,最近的問題似乎與庫兼容性問題有關。錯誤日誌顯示iteritems的問題。 happybase manual引用了排序查詢所需的附加python庫,從python版本2.7(我正在運行2.7.6)開始並不是必需的。
有沒有人遇到過類似的問題?他們可以很容易地修復或你會推薦使用不同的界面?
更多細節
我的Hadoop(2.6.0)和HBase的(0.98.10 - 2015年2月5日)安裝和單機的配置中運行。他們啓動了。我可以通過shell與hbase進行交互,創建表格,輸入值並掃描它們。
我可以通過python掃描並打印表格,其中至少顯示連接的工作原理。但總是失敗。這個簡短的例子顯示了這個問題:
爲了這個例子,我的表被稱爲test(在hbase shell中創建)。它有一列f1。
hbase(main)> create 't1','f1'
hbase(main)> put 't1','1','f1','hello'
現在蟒蛇:
>>> import happybase
>>> connection = happybase.Connection('localhost')
>>> table = connection.table('t1')
>>> print(table.row('1')) # {'f1:': 'hello'}
>>> table.put('2',{'f1','hey'}) # fails, see log
更詳細信息:
節儉運行。
# hbase thrift start -threadpool
[email protected]> hbase -version
Java版本 「1.8.0_31」 的Java(TM)SE運行時環境(建立1.8.0_31-B13) 爪哇熱點(TM)64位服務器VM(建立25.31-B07,混合模式)
錯誤日誌:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-15-56dab4cd31ef> in <module>()
----> 1 table.put('2',{'f1','hey'})
/usr/local/lib/python2.7/dist-packages/happybase/table.pyc in put(self, row, data, timestamp, wal)
437 """
438 with self.batch(timestamp=timestamp, wal=wal) as batch:
--> 439 batch.put(row, data)
440
441 def delete(self, row, columns=None, timestamp=None, wal=True):
/usr/local/lib/python2.7/dist-packages/happybase/batch.pyc in put(self, row, data, wal)
81 value=value,
82 writeToWAL=wal)
---> 83 for column, value in data.iteritems())
84
85 self._mutation_count += len(data)
AttributeError: 'set' object has no attribute 'iteritems'
什麼是「運行代碼片段」按鈕,我的意思是除了混亂文本? – JensG 2015-02-11 14:31:34
對不起,他們擺脫了他們。 – BenjiMan 2015-02-11 16:52:16