1

このチュートリアルhadoopをインストールし、これでhbaseをインストールし、これでインストールしhbase.thriftました

これで、いくつかの hbase テーブルを作成するための Python スクリプトができました。py ファイルを実行すると、次のエラーが表示されます。

Traceback (most recent call last):
  File "./createTables.py", line 9, in <module>
    from hbase import Hbase
ImportError: No module named hbase

この質問には同じ問題があるようでした: How can I import hbase in python?

そこに書かれている解決策を試しました。走った

thrift --gen py Hbase.thrift

が置かれていた/usr/lib/hbase-0.94.2/src/main/resources/org/apache/hadoop/hbase/thriftフォルダ内Hbase.thriftgen-py上記の同様の質問にリンクされているチュートリアルで説明されているように、サブフォルダーを作成しました。

ここで、「単にそのコマンドを取得して、デフォルトのモジュール フォルダー (またはプログラムを実行するフォルダーにコピーすると、動作するはずです) にコピーするだけです」というメッセージが表示された場合。与えられたソリューションの一部です。与えられたpyファイルが配置されているフォルダーに移動し(たとえば/home/kumo/Downloads/createTables.py、 )、実行します

thrift --gen py /usr/lib/hbase-0.94.2/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift

...?しかし、それでは何も起こりません。Hbase.thrift ファイルを py ファイルの隣の Downloads フォルダーにコピーすると、

[FAILURE:arguments:1] Could not open input file with realpath: ./Hbase.thrift

したがって、明らかにどちらも役に立ちません。

私も追加してみました

import sys
sys.path.append('/usr/lib/hbase-0.94.2/src/main/resources/org/apache/hadoop/hbase/thrift/gen-py')

同じ最初のモジュールが見つからないというエラーが再び発生しました。

5.cも追加してみました。.bashrc に python パスを追加して、thrift チュートリアルの手順を実行します。

export PYTHONPATH=$PYTHONPATH:/usr/lib/hbase-0.94.2/src/main/resources/org/apache/hadoop/hbase/thrift/gen-py

本当にうまくいきませんでした。

/usr/local/hadoop/src/contrib/thriftfs/gen-pyこれは、sys インポートと pythonpath エクスポートの両方として何らかの形でポップアップした別の gen-py フォルダーであるため、 path でも同じことに疲れましたが、それでも同じエラーが発生します。

私はまだこれらすべてに慣れていないので、チュートリアルを順を追って説明しました。そもそもチュートリアルで何を見逃したのか、何を見逃したのかわかりません。

助けてくれてありがとう!

4

2 に答える 2

2

あなたのケースで何が問題なのか正確にはわかりませんが、私はHappyBaseに非常に満足しています- 試してみてください.

于 2012-10-31T19:24:39.607 に答える
1

解決策は、生成された gen-py フォルダーへの python フォルダー内のリンクのようです。解凍した hbase フォルダーを自宅の独自の「ソフトウェア」フォルダーに移動し、リンクを作成しました。

cd /usr/local/lib/python2.7/dist-packages/
ln -s /home/kumo/software/hbase-0.94.2/src/main/resources/org/apache/hadoop/hbase/thrift/gen-py/hbase/

そのエラーについてはすべて問題ありませんでした。複数のプロジェクトで何が起こるかはわかりません。

于 2012-11-12T12:29:29.890 に答える