★悩み★
・PySparkでネストされたJsonを読み込むことってできるの?
・PySparkでJson形式のファイルを読み込む方法が分からない。
・PySparkでネストされたJsonをCSVに変換する方法が分からない。
こういった「悩み」に答えます。
★本記事の内容★
① PySparkでネストされたJsonを読み込むことはできるか?をご紹介
② PySpark(PythonとSpark)でネストされたJsonをCSV変換するための準備
③ PySpark(PythonとSpark)でネストされたJsonをCSV変換する方法を紹介
これからご紹介する「【Python】PySparkでネストされたJsonをCSVに変換する方法」を実践したことで、筆者は1時間以内で「PythonとSparkを用いて、ネストされたJsonをCSVに変換」できました。
記事の前半では「PySpark(PythonとSpark)でネストされたJsonを読み込む方法」を解説します。記事の後半では「PySpark(PythonとSpark)でネストされたJsonをCSV変換する方法」をプログラムを例を用いて紹介します。
この記事を読み終えることで、「PySpark(PythonとSpark)でネストされたJsonをCSV変換するプログラムを作成できる」状態になります。
★PySparkとは★
PySpark とは、Spark を実行するための Python API です。Apache Spark とPython のコラボレーションをサポートするためにリリースされました。
参照:PySparkとは?
PySparkでネストされたJsonを読み込むことはできるか?
「PySparkでネストされたJsonを読み込むことはできるか?」に関して解説します。
データ分析などをする上で、以下のようなネストされたJsonを分析に利用することが多々あります。
{"col1":{"col2":"val2","col3":["arr1","arr2"]}, "col4": 1.2, "col5": {"col6": 1, "col7":2}}
結論から言いますと、PySpark(PythonとSpark)でも上記のようなネストされたJsonを扱うことができます。
もちろん、下記のようなネストされていないJsonもPySpark(PythonとSpark)で簡単に扱うことができます。
{"col1":1,"col4": 1.2}
以上が、「PySparkでネストされたJsonを読み込むことはできるか?」となります。
PySpark(PythonとSpark)でネストされたJsonをCSV変換するための準備
「PySpark(PythonとSpark)でネストされたJsonをCSV変換するための準備」に関してご紹介します。
★PySpark(PythonとSpark)でネストJsonをCSV変換する為の準備★
手順1:Pythonのインストール
手順2:Sparkのインストール
上記手順を実施することで、「PySpark(PythonとSpark)でネストされたJsonをCSV変換するための準備」ができます。
上記の各手順は、以下の日時で手順確認済みです。
手順確認済み日時:2022年4月8日
以降で、上記「PySpark(PythonとSpark)でネストJsonをCSV変換する為の準備」の各手順に関してご説明します。
手順1:Pythonのインストール
「手順1:Pythonのインストール」に関して解説します。
PySparkを使ってネストされたJsonをCSV変換するためには、Pythonのインストールが必要です。
以下の記事を参考にし、お使いのパソコンやサーバーにPythonをインストールしましょう。
>> 【ubuntu向け】pyenvでPythonをインストールする手順【簡単】
>> 【コピペOK】pyenvでPythonをインストールする手順【Linux用】
>> 【最短5分】PyAutoGUIをWindowsにインストールする手順の「手順1:Pythonのインストール」を参照
>> 【環境構築】インストーラーでMacOSにPythonをインストール
以上で、「手順1:Pythonのインストール」は完了です。
手順2:Sparkのインストール
「手順2:Sparkのインストール」に関して説明します。
PySparkを使ってネストされたJsonをCSV変換するためには、Apache Sparkのインストールが必要です。
「Apache Soarkをインストールする手順」に関しては、以下の記事をご覧ください。
以上で、「手順2:Sparkのインストール」は完了です。
上記の流れで、PySpark(PythonとSpark)でネストされたJsonをCSV変換するための準備ができました。
PySpark(PythonとSpark)でネストされたJsonをCSV変換する方法
「PySpark(PythonとSpark)でネストされたJsonをCSV変換する方法」に関してご紹介します。
★PySpark(PythonとSpark)でネストされたJsonをCSV変換する流れ★
手順1:PySpark(PythonとSpark)でJsonをCSV変換するプログラムを作成
手順2:作成した「PySparkでJsonをCSV変換するプログラム」の動作確認
上記手順を実施することで、「PySpark(PythonとSpark)でネストされたJsonをCSV変換」できます。
上記の各手順は、以下の日時で手順確認済みです。
手順確認済み日時:2022年4月8日
以降で、上記「PySpark(PythonとSpark)でネストされたJsonをCSV変換する流れ」の各手順に関してご説明します。
手順1:PySpark(PythonとSpark)でJsonをCSV変換するプログラムを作成
「手順1:PySpark(PythonとSpark)でJsonをCSV変換するプログラムを作成」に関して解説します。
PySpark(PythonとSpark)でJsonをCSV変換するプログラムを作成しましょう。
PySpark(PythonとSpark)でJsonをCSV変換するプログラムは、以下となります。
from datetime import datetime
from pyspark.sql import DataFrameReader
from pyspark.sql import SparkSession
import sys
import json
## 1. sparkの設定を作成
spark = SparkSession \
.builder \
.appName("Python Spark CALC FAMOUS WORDS OF SPOTS") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
spark_context = spark.sparkContext
## 2. HDFSに格納されたJsonの読み込み
test_df = spark.read.json("spart-test/test.json")
## 3. データを表示
test_df.select("col4","col5.col6").write.option("header","true").csv("test.csv")
上記プログラムを「python-spark-json-to-csv.py」というファイル名で保存してください。
以上で、「手順1:PySpark(PythonとSpark)でJsonをCSV変換するプログラムを作成」は完了です。
手順2:作成した「PySparkでJsonをCSV変換するプログラム」の動作確認
『手順2:作成した「PySparkでJsonをCSV変換するプログラム」の動作確認』に関して解説します。
手順1で作成した「PySparkでJsonをCSV変換するプログラム」の動作確認をしましょう。
作成した「PySparkでJsonをCSV変換するプログラム」で利用するJsonファイルを作成するために、以下のコマンドを順に実行してください。
$ hadoop fs -mkdir spark-test
$ cat test.json
{"col1":{"col2":"val2","col3":["arr1","arr2"]}, "col4": 1.2, "col5": {"col6": 1, "col7":2}}
$ hadoop fs -put test.json spark-test/test.json
$ hadoop fs -cat spark-test/test.json
{"col1":{"col2":"val2","col3":["arr1","arr2"]}, "col4": 1.2, "col5": {"col6": 1, "col7":2}}
続いて、作成した「PySparkでJsonをCSV変換するプログラム」を実行するために、以下のコマンドを順番に実行してください。
$ export SPARK_CMD="/opt/oss/spark-2.4.5-bin-without-hadoop/bin/spark-submit"
$ ${SPARK_CMD} --master yarn --conf "spark.executor.memoryOverhead=600" \
--num-executors 2 \
--executor-cores 1 \
--executor-memory 3G \
python-spark-json-to-csv.py.py
コマンド実行後、以下のコマンドを順番に実行して、ネストされたJsonからCSV変換できたことを確認します。
$ hadoop fs -ls test.csv
Found 2 items
-rw-r--r-- 1 hadoop supergroup 0 2020-09-12 23:48 test.csv/_SUCCESS
-rw-r--r-- 1 hadoop supergroup 16 2020-09-12 23:48 test.csv/part-00000-fda68adb-b7ab-4fd9-b83b-1bec90fad67b-c000.csv
$ hadoop fs -cat test.csv/part-00000-fda68adb-b7ab-4fd9-b83b-1bec90fad67b-c000.csv
col4,col6
1.2,1
$
コマンド実行後、「CSV形式のデータが表示された」場合、「正常にPySparkでJsonをCSV変換できた」と判断できます。
以上で、『手順2:作成した「PySparkでJsonをCSV変換するプログラム」の動作確認』は完了です。
上記の流れで、PySpark(PythonとSpark)でネストされたJsonをCSV変換できました。
【まとめ】PySparkでネストされたJsonをCSVに変換する方法【Python 】
いかがでしたでしょうか?PythonとSparkを使いJsonをCSV変換する手順を解説し、以下の悩みを解決しました。
★悩み★
・PySparkでネストされたJsonを読み込むことってできるの?
・PySparkでJson形式のファイルを読み込む方法が分からない。
・PySparkでネストされたJsonをCSVに変換する方法が分からない。
「PythonでネストされたJsonをCSV変換することができないか?」と悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。
コメント