問題タブ [py4j]
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.
python - Py4Java: ImportError: Apache Spark の Python シェルを実行しているときに numpy という名前のモジュールがありません
このApache Spark トークのライブ コーディングをフォローしようとしています。
エラーが発生するまでのIPythonノートブックは次のとおりです。
numpyがインストールされています:
しかし、model = KMeans.train(data, k=5)
依存するコマンドを実行すると、Spark が使用numpy
するPy4Java
ライブラリがこのエラーをスローします。py4j/protocol.py
Spark フォルダー内のこの Python スクリプトに、既存の numpy インストールからインポートするように指示するにはどうすればよい./anaconda/lib/python2.7/site-packages
ですか?
python - 新しいプロセスが生成されると、インポートはどうなりますか?
新しいプロセスが生成されると、インポートされたモジュール変数はどうなりますか?
IE
どこ:
foobar は、someOtherModule の開始時に宣言されたものにアクセスしています。
someOtherModule.py:
具体的には、関数の外側の上部に初期化されたpy4jゲートウェイを持つモジュール(Yと呼ばれる)があります。モジュール X では、一度に複数のファイルをロードしています。ロード後にデータを並べ替える関数は、ゲートウェイを使用する Y の関数を使用します。
このデザインはpythonicですか?新しいプロセスが生成されるたびに Y モジュールをインポートする必要がありますか? または、これを行うより良い方法はありますか?
python - Python -> Py4j -> Spark -> Cassandra
すべてが機能することを確認するためだけに、4 行のみのテスト Cassandra テーブルで単純な Spark 行カウント ジョブをテストしたいと考えています。
これを Java からすばやく動作させることができます。
今、私はPythonで同じことをしたいと思っています。Spark ディストリビューションには、Python から Spark を使用するためのバンドルされていない PySpark ソース コードのセットが付属しています。py4j と呼ばれるライブラリを使用して Java サーバーを起動し、TCP ゲートウェイを介して Java コマンドをマーシャリングします。これを機能させるために、そのゲートウェイを直接使用しています。
--driver-class-path オプションを使用して、次の追加の jar を Java SparkSubmit ホストに指定します。
行数テストを行うコア Python コードは次のとおりです。
この最後の行で、次のエラーが発生します。
明らかに、何らかの構成またはセットアップの問題があります。合理的にデバッグまたは調査する方法、または何を試すことができるかわかりません。Cassandra/Python/Spark の専門知識をお持ちの方にアドバイスをいただけますか? ありがとうございました!
編集: 同僚が、これのルートである spark-defaults.conf ファイルをセットアップしました。これが Java ではなく Python で問題を引き起こした理由を完全には理解していませんが、問題ではありません。私はそのconfファイルを望まず、それを削除すると問題が解決しました。
java - Python スクリプトによって生成されたデバッグ用の JVM に接続します
IntelliJ で実行する Python コードがあります。Python コードはjava
コマンドを実行し、最終的に JVM を生成します。Python と JVM は、Py4J とカスタム ソケットを使用して通信します。IntelliJ を使用してデバッグ目的で JVM に接続するにはどうすればよいですか?