Python

PySparkでCSVファイルの読み込み

こんにちわ!

今回の記事ではPySparkでCSVファイルを読み込む方法を紹介したいと思います。

みんな大好きPandasではread_csvで読み込むことができますが、PySparkでも似たような感じで簡単にCSVファイルを読み込み、Spark DataFrameに格納することができます。

読み込み方法としてはスキーマを指定して読み込む方法と、スキーマは自動で推定してもらう方法の大きく2種類があると思いますので、それぞれの方法でデータを読みこんでみます。

では始めましょう!

参考にしたのはこちらです。
Applied Data Science Using PySpark

日本語だとこちら。
入門PySpark

 

read csvでスキーマ指定せず読み込む

まずはスキーマを指定せずに読みこんでみます。

試しに読み込むデータはbankデータにしてみます。

bankデータに興味がある方は、こちらを見てみてくださいね。

https://archive.ics.uci.edu/ml/datasets/bank+marketing

こちらはUCIのWEBサイトですが、kaggleからもダウンロードすることができるようです。

さて、まずはSparkSessionをimportしてSparkSessionを立ち上げます。

 

 

これでSparkSessionを立ち上げられたので、このあとは下のコードのようにspark.read.csvとして、ファイル名やヘッダー情報などを入力し、"inferSchema=True"としてやるだけです。

とても簡単ですね。

 

 

 

これで結果をSpark DataFrameに格納することができて、show()してみるとこのようにちゃんと読み込めていることがわかるかと思います。

 

 

ちなみにdtypesするとこのようにいい感じに自動でスキーマを推測してくれていることがわかるかと思います。

厳密にやりたい場合はこれからやる方法で、読み込み時にスキーマ指定をしておいた方が良いかと思いますが、それほどこだわりがないのであれば、このように自動でスキーマを決めてもらっても大丈夫ではないでしょうか。

 

CSVファイル読み込み時にスキーマを指定する方法

では、CSVファイルを読み込むときに、スキーマも指定する方法を紹介しておきます。

自動でスキーマを決めるときは"inferSchema=True"にしましたが、手動でスキーマを指定する場合は"inferSchema=False"にし、schemaを手動で設定していきます。

こちらのデータはOnline Retailのデータにし、スキーマは適当にString, Integer, Date, Floatなどそれぞれ個別にStructFeildで指定していきます。

 

 

スキーマ情報をschemaという変数に入れたので、こちらを使ってreadしてみます。

今度はread.formatでCSVを指定し、loadの中でschemaを先ほど作成したschema変数を指定します。

 

 

 

これでCSVファイルのデータ読み込みが完了し、Spark DataFrameに格納できています。

一応中身とスキーマを確認してみましょう。

 

 

はい、このようにちゃんとスキーマの指定通りになっていますね!

こんな感じでスキーマを指定するパターンとしないパターンで読み込むことができました!

おすすめ記事

1

お疲れさまです! 久しぶりの更新になってしまいましたが、僕が未経験からデータサイエンティストになるまでの転職活動の全記録を書き残しておきたいと思います。 僕は博士号を取得後に研究員として仕事をしていま ...

2

こんにちわ、さとしです! 気がつけばこのデータサイエンティスト転職から、1年が経とうとしています。 今はご時世的に外にも出られず、変化があまりない生活を送ったせいもあってか、なんかあっという間に1年が ...

3

データサイエンティストに転職して1年が経ち、いろいろな業務を経験させてもらいつつ、自分でもある程度本を読んできました。 仕事の話は下記の記事で書きましたが、自分で読んだ本については書いていないのでこの ...

-Python

Copyright© さとぶろぐ , 2023 All Rights Reserved Powered by AFFINGER5.