Databricks(Spark)でXMLファイルを読み込む

これはなに?

DatabricksでXMLをソースとしてデータ分析するために、DatabricksでXMLを読み込むための手順。
Sparkのライブラリインストールから、XMLファイルをSparkのデータフレームに格納するところまで。

環境

  • プラットフォーム: Azure

手順

SparkでXMLファイルを扱えるようにするためには、”spark-xml” というSparkのライブラリをクラスタにインストールする必要があります。

spark-xml をDatabricksに取り込む方法は2つ

  • Import Library - Marvenより、spark-xmlの取り込み
  • JARファイルを外部より取得し、 Import Library - Uploadよりspark-xmlの取り込み

Import Library - Marvenより、spark-xmlの取り込み

Import Library - Marvenを選択し、”spark-xml”を検索すると利用可能なライブラリが表示されます。
2020年9月時点では、scalaの2.10,2.11に対応した”spark-xml” をインポートできます。 f:id:ykoomaru:20200926091909p:plain f:id:ykoomaru:20200926082432p:plain

JARファイルを外部より取得し、 Import Library - Uploadよりspark-xmlの取り込み

最新のDatabricks Runtime Versionを利用しているとImport LibraryのSearchで対応しているモジュールのバージョンが表示されない場合があります。
その場合は、Mavenより直接JARファイルをダウンロードし、 Import Library - UploadでJARを指定してあげればインストール可能です。

f:id:ykoomaru:20200926083056p:plain

spark-xmlのレポジトリ mvnrepository.com

クラスタへライブラリのインストール

取り込んだライブラリの画面で、インストール対象のクラスタを選択し、 「Install」を実行。 f:id:ykoomaru:20200926092157p:plain

インストールが完了するとStatusが「Installed」になり、クラスタで実行しているNotebookよりspark-xmlが利用できるようになります。 f:id:ykoomaru:20200926091617p:plain

動作確認

◇サンプルデータXML

<?xml version="1.0" encoding="utf-8"?>
<dependency>
     <groupId>com.databricks</groupId>
     <artifactId>spark-xml_2.11</artifactId>
     <version>0.6.0</version>
</dependency>

◇コマンド

df = spark.read.format('xml').option("rootTag", "dependency").load("dbfs:/FileStore/shared_uploads/sample.xml")
df.show()

◇実行結果

f:id:ykoomaru:20200926090630p:plain

SparkでXMLをデータフレームに取り込むことができました。

参考サイト