🌟

Azure Synapse Analytics の Apache Spark プールで Spark NLP を使う

2022/09/05に公開

はじめに

タイトルのとおり、Apache Spark 向け自然言語処理ライブラリである Spark NLPAzure Synapse Analytics の Apache Spark プールで使うための情報をまとめました。なお、本記事の対象は PySpark です。

問題

Synapse の Apache Spark プール へ PySpark 版の Spark NLP をインストールするだけでは、Spark NLP による処理実行のタイミングで TypeError: 'JavaPackage' object is not callable が発生してしまいます。(import までは成功します)

原因についてはこちらのスレッドで議論されていました。

解決法

Spark NLP の公式 GitHub リポジトリから FAT JAR ファイルを取得して Synapse の Apache Spark プールへインストールすることで解決します。
今回は執筆時点で最新の Spark NLP 4.1.0 と、サポートされている Apache Spark 3.2 および 3.1 の組み合わせで問題が解決することを確認しました。

手順

1. FAT JAR ファイルをダウンロードする

Spark NLP の公式 GitHub リポジトリから FAT JAR ファイルをダウンロードします。赤線で囲った、バージョン 4.1.0 の CPU 向けのものを選びます。

2. FAT JAR ファイルを Synapse ワークスペースへアップロードする

ダウンロードした FAT JAR ファイルを Synapse Studio からワークスペースパッケージとしてアップロードします。

3. FAT JAR ファイルを Synapse の Apache Spark プールへインストールする

Synapse Studio からインストールを行います。インストールには数分かかります。



4. Spark NLP を Synapse の Apache Spark プールへインストールする (まだインストールしていない場合)

以下の内容の requirement.txt ファイルを作成して Synapse Studio からプールパッケージとしてインストールします。FAT JAR ファイルと同様にインストールには数分かかります。

spark-nlp==4.1.0



動作確認

実行するコードは下記ブログ記事を参考にさせていただきました。

  • 日本語に対してSpark NLPを使う

    今度は TypeError: 'JavaPackage' object is not callable が発生せず結果が返ってきました!上記スクリーンショットは Apache Spark 3.2 のものですが、3.1 でも同様に成功しました。

補足情報

  • FAT JAR ファイルはセッションスコープの Java または Scala パッケージとしてもインストールできますが、別途 Azure Storage へのアップロードやコード内でのパス指定が発生して面倒なため Synapse Studio からインストールが完結するワークスペースパッケージとしてのインストールを選択しました。
  • Spark NLP につていも、セッションスコープの Python パッケージとしてのインストールが可能ですが、今回選択したワークスペースパッケージと同じプール単位でのインストールができるプールパッケージにてインストールする手順を選択しました。

まとめ

無事 Synapse の Apache Spark プール上でも Spark NLP を動かすことが出来ました。

以上です。🍵

Microsoft (有志)

Discussion