Pyspark.sql.DataFrameReader.csv()
このメソッドは、CSV ファイルからデータを読み取り、PySpark DataFrame に保存するために使用されます。 CSV を DataFrame に読み込むときにオプションを受け取ります。さまざまなオプションについて、例を挙げて詳しく説明します。複数の CSV ファイルを渡すときは、カンマ演算子で区切られたリストで拡張子付きのファイル名を渡すことが重要です。 CSV ファイルを 1 つだけ読み取る場合は、リストにファイル名を指定する必要はありません。
構文:
単一ファイル -spark_app.read.csv(‘file.csv’, オプション …)
複数のファイル –spark_app.read.csv(['file1.csv','file2.csv',…],options…)
オプションとファイル名を分離することも可能です。
単一ファイル –spark_app.read.options(オプション…).csv(‘file.csv’)
複数のファイル –spark_app.read.options(オプション…).csv([‘file1.csv’,’file2.csv’,…])
次の例を実装する前に、PySpark ライブラリをインストールしてください。
pip インストール pyspark
インストールが成功すると、次のような出力が表示されます。
シナリオ 1: CSV ファイルのヘッダーの読み取り
以下に示す 5 つのレコードを含む「person_skill.csv」という名前の CSV ファイルを作成し、PySpark DataFrame にロードしましょう。
header パラメーターは、PySpark DataFrame 内の列名を指定するために使用されます。ブール値を受け取ります。 「True」の場合はCSVファイルに存在する実際の列名がDataFrameに指定され、それ以外の場合はc0、c1、c2…が指定され、実際の列名が行となります。ヘッダー パラメーターを true に設定することをお勧めします。
例 1: ヘッダー = True
pysparkをインポートするpyspark.sql から SparkSession をインポート
linuxhint_spark_app = SparkSession.builder.appName( 「Linux のヒント」 ).getOrCreate()
# person_skill.csv という名前の CSV をヘッダー付きの列ラベルを持つスキルにロードします
スキル = linuxhint_spark_app.read.csv( 「person_skill.csv」 、 ヘッダ =本当)
# データフレームを表示する
スキル.show()
出力:
説明:
PySpark DataFrame が、指定された列と行を含む CSV ファイルから作成されていることがわかります。
次のコマンドを使用して列を確認します。
スキル.コラム
例 2: ヘッダー = False
pysparkをインポートするpyspark.sql から SparkSession をインポート
linuxhint_spark_app = SparkSession.builder.appName( 「Linux のヒント」 ).getOrCreate()
# person_skill.csv という名前の CSV を、ヘッダーのない列ラベルを持つスキルにロードします
スキル = linuxhint_spark_app.read.csv( 「person_skill.csv」 、 ヘッダ =偽)
# データフレームを表示する
スキル.show()
出力:
説明:
PySpark DataFrame が既存の列なしで CSV ファイルから作成されていることがわかります。
また、既存の列は PySpark DataFrame に行として保存されます。
スキル.コラム
Read.options.csv() の使用
次に、read.options.csv() メソッドを使用して CSV ファイルを読み取ります。ここでは、csv() の引数とファイル名として、オプションの区切り文字、ヘッダーなどのオプションを渡す必要があります。ヘッダーパラメータを「True」に設定して渡しましょう。
シナリオ 1:
pysparkをインポートするpyspark.sql から SparkSession をインポート
linuxhint_spark_app = SparkSession.builder.appName( 「Linux のヒント」 ).getOrCreate()
# read.options.csv() を使用する
スキル = linuxhint_spark_app.read。 オプション ( ヘッダ =真).csv( 「person_skill.csv」 )
# データフレームを表示する
スキル.show()
出力:
シナリオ 2: CSV ファイルの区切り文字の読み取り
delimiter パラメーターは、各フィールドを区切るために使用される文字を受け取ります。デフォルトではカンマ (,) が必要です。最初のシナリオで使用したものと同じ CSV ファイルを使用し、区切り文字としてカンマ (「,」) を渡します。
pysparkをインポートするpyspark.sql から SparkSession をインポート
linuxhint_spark_app = SparkSession.builder.appName( 「Linux のヒント」 ).getOrCreate()
# ヘッダーとともに区切り文字を指定して read.options.csv() を使用する
スキル = linuxhint_spark_app.read。 オプション ( ヘッダ =真、区切り文字= 「、」 ).csv( 「person_skill.csv」 )
# データフレームを表示する
スキル.show()
出力:
複数のファイルの読み取り
これまでは、単一の CSV ファイルを読み取っていました。複数の CSV ファイルを読み取る方法を見てみましょう。このシナリオでは、複数のファイルの行が単一の PySpark DataFrame に追加されます。メソッド内のリストでファイル名を渡すだけです。
例:
次のデータを含む、「person_skill.csv」および「person_skill2.csv」という名前の CSV ファイルを作成します。
これら 2 つの CSV ファイルを読み取り、単一の PySpark DataFrame に保存します。
pysparkをインポートするpyspark.sql から SparkSession をインポート
linuxhint_spark_app = SparkSession.builder.appName( 「Linux のヒント」 ).getOrCreate()
# person_skill.csv と person_skill2.csv という名前の 2 つの CSV ファイルをヘッダー付きの列ラベルでスキルにロードします
スキル = linuxhint_spark_app.read.csv([ 「person_skill.csv」 、 「person_skill2.csv」 ]、sep= 「、」 、 ヘッダ =本当)
スキル.show()
出力:
説明:
最初の CSV には 6 つのレコードが保持され、2 番目の CSV には 3 つのレコードが保持されます。最初の CSV が最初に DataFrame にロードされることがわかります。次に、2 番目の CSV がロードされます。最後に、PySpark DataFrame には 9 つのレコードが保持されます。
結論
CSV を PySpark DataFrame に読み取るのは、pyspark.sql.DataFrameReader.csv() メソッドを使用すると非常に簡単です。列と形式を指定するために、ヘッダーと区切り文字のパラメーターをこのメソッドに渡すことができます。 PySpark は、提供されたメソッドとそのオプションを使用して、一度に複数の CSV ファイルを読み取ることもサポートします。この記事では、さまざまなオプションを考慮して例を確認しました。また、オプションをメソッドに渡す 2 つの方法についても説明しました。