LoginSignup
2
1

More than 3 years have passed since last update.

PySparkでGraphFramesのGraphFrameオブジェクトが作れない

Posted at

環境

  • OS Ubuntu 18.04
  • Java
terminal
$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)
  • 必要に応じて環境変数JAVA_HOMEやPYSPARK_PYTHONなどを正しく設定してください

生じた事象

python
from graphframes import GraphFrame
nodes = #nodeを定義
edges = #edgeを定義
GraphFrame(nodes, edges)

このコードを走らせようとした際にGraphFrameのコンストラクタ内で以下のようなエラーを吐く.

terminal
...
py4j.protocol.Py4JJavaError: An error occurred while calling o55.loadClass.
: java.lang.ClassNotFoundException: org.graphframes.GraphFramePythonAPI
    at ...

graphframesのjarライブラリが読み込めてないことに起因するのでこれを入れてあげれば解決します.

対応策

読み込み先の特定

$SPARK_HOME/jarsが存在するならそこでOKです.
$SPARK_HOMEが設定されていない場合,まずpysparkのあるディレクトリを特定します.
pipをお使いの方はpip show pysparkでLocationの欄を見ればOK.
あるいは次のようにして確認できます.

python
import pyspark
print(pyspark.__path__)
# ['/usr/local/lib/python3.6/dist-packages/pyspark'] のような形式で返ってくる

特定が完了したらそのpyspark/jarsが読み込み先のディレクトリです.

jarのダウンロード

このサイトからお手持ちのversionに対応したjarをダウンロードして先ほど特定したディレクトリの中に入れれば完了です.

何か正攻法が存在するなら教えていただければ幸いです.

参考サイト

https://stackoverflow.com/questions/39261370/unable-to-run-a-basic-graphframes-example
https://markhneedham.com/blog/2019/04/17/pyspark-class-not-found-exception-org-graphframes-graphframepythonapi/

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1