問題タブ [happybase]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cassandra - 幅の広い列ストアを使用して複合主キーを構築するのは正しいパターンですか?
HBase と Cassandra は、行と列の両方の概念を使用して、幅の広い列ストアとして構築されています。
行は、RDBMS の主キーの概念に似たキーと、いくつかの列で構成される値で構成されます。
表現は次のようになります。
アプリケーション層で、構成された主キーを構築して、同じ場所にある行をすばやく反復処理できるようにすることは正しいですか。
これは次のように表現できます。
name
列は から に移動され、列名が 1 つValue
にKey
なりました。Value
value
python - HBase からの HappyBase データのデコード
HBase から値をデコードしようとすると、エラーが表示されますが、Python はそれが UTF-8 形式ではなく、データを HBase に入れる Java アプリケーションが UTF-8 のみでエンコードしたと考えているようです。
a = '\x00\x00\x00\x00\x10j\x00\x00\x07\xe8\x02Y' a.decode("UTF-8") トレースバック (最新の呼び出しが最後): ファイル ""、1 行目、ファイル "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py"、16 行目、デコードで codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8 を返します' コーデックは位置 9 のバイト 0xe8 をデコードできません: 継続バイトが無効です
何かご意見は?
python - PIG からの実行時に「happybase という名前のモジュールがありません」
Happybase を使用して HBase に接続する Python UDF があります。Python 2.7 からコードを実行すると、完全に動作します。
ただし、Pig 0.15.0 から Python UDF を呼び出すと、次のエラーが発生します。
エラー org.apache.pig.tools.grunt.Grunt - エラー 1121: Python エラー。トレースバック (最新の呼び出しは最後): happybase をインポートします ImportError: happybase という名前のモジュールはありません
私の Pig スクリプトでは、次のように Python スクリプト (pigtest.py) を登録しています。
Python スクリプトで Happybase パスを次のように設定しようとしましたが、違いはありませんでした。
また、「 /usr/local/lib/python2.7/dist-packages/happybase 」を .bashrc ファイルの JYTHON_PATH に追加しようとしましたが (私は Ubuntu を使用しています)、同じエラーが発生します。
Happybase パスをどこかに設定する必要があるように思えますが、どこにあるのかわかりません。
java - Java と Python の HBase への並列スキャン リクエストのパフォーマンスが異なる
声明
10 台のマシン HBase クラスターと数十億の行があります。すべての行は、1 つの列ファミリーと最大 20 列で構成されます。開始行プレフィックスと終了行プレフィックスを含む頻繁なスキャン リクエストを実行する必要があります。通常、すべてのスキャンで約 100 ~ 10000 行が返されます。
リクエストは非常に頻繁に (1 分間に最大数リクエスト) 送信される可能性があるため、パフォーマンスが優先されます。システムのアーキテクチャのため、現在の Java コードではなく Python でソリューションを実現したいと考えています。問題は、Python では Java よりも 5 倍から 10 倍悪いパフォーマンスが得られることです。
現在機能しているもの
HBase へのスキャン要求を実行する Java コードがあります。通常の HBase Java API を使用します。
Callable
これらのクエリは、インターフェイスとを使用して並列化されましたScheduledThreadPoolExecutor
。call()
すべての callableのメソッドは rungetNumber(Number key)
です。
これはかなりうまく機能し、次のパフォーマンスを達成できます。
- 1 回のスキャンあたり1.5 ~ 2.0 秒
- 100 並列スキャンあたり5.0 ~ 8.0 秒
私たちが試みること
Happybaseライブラリの助けを借りて、Python で同様のソリューションを実装しようとしています。
達成された性能:
- 1 回のスキャンあたり2.0 ~ 3.0 秒
- 100 並列スキャンあたり30 ~ 55 秒
ご覧のとおり、シングル スキャンのパフォーマンスは非常に似ています。しかし、Python で並列化されたタスクははるかに遅くなります。
なぜそれが起こるのですか?Python/Happybase コードに問題があるのではないでしょうか? または、HBase Thrift サーバー (HappyBase が HBase への接続に使用するサーバー) のパフォーマンスは?