雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

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をデータフレームに取り込むことができました。

参考サイト