Spark DataFramesの詳細

PySpark 入門

Benjamin Schmidt

Data Engineer

さまざまなデータソースから DataFrame を作成する

  • CSVファイル 構造化された区切り付きデータ
  • JSONファイル: 半構造化の階層型データ形式
  • Parquetファイル: 保存とクエリ処理に最適化されており、データエンジニアリングでよく使用されます
  • 例:
    spark.read.csv("path/to/file.csv")
    
  • 例:
    spark.read.json("path/to/file.json")
    
  • 例:
    spark.read.parquet("path/to/file.parquet")
    
1 https://spark.apache.org/docs/latest/api/python/reference/pyspark.pandas/api/pyspark.pandas.read_csv
PySpark 入門

スキーマ推論と手動によるスキーマ定義

*Spark は を使用してデータからスキーマを推測できる inferSchema=True

  • より細かく制御するためにスキーマを手動で定義する - 固定されたデータ構造で役立つ

大規模なスキーマ

PySpark 入門

PySpark DataFrame のデータ型

  • IntegerType: 整数
    • 例: 13478-1890456
  • LongType: 大きな整数
    • 例: 8 バイトの符号付き整数, 922334775806
  • FloatType と DoubleType: 小数値を扱うための浮動小数点数
    • 例: 3.14159
  • StringType: テキストまたは文字列データに使用されます
    • 例: "This is an example of a string."
  • ...
PySpark 入門

PySpark DataFrame のデータ型指定構文

# Import the necessary types as classes
from pyspark.sql.types import (StructType,
                            StructField, IntegerType,
                            StringType, ArrayType)

# Construct the schema
schema = StructType([
    StructField("id", IntegerType(), True),
    StructField("name", StringType(), True),
    StructField("scores", ArrayType(IntegerType()), True)
])

# Set the schema
df = spark.createDataFrame(data, schema=schema)
PySpark 入門

DataFrame操作 - 選択とフィルタリング

  • .select()を使って特定の列を選択する
  • .filter()または.where()を使用して、条件に基づいて行をフィルター処理します
  • .sort() を使用して、列のコレクション {{3}} で順序付けする
# Select and show only the name and age columns
df.select("name", "age").show()
# Filter on age > 30
df.filter(df["age"] > 30).show()
# Use Where to filter match a specific value
df.where(df["age"] == 30).show()
# Use Sort to sort on age
df.sort("age", ascending=False).show()
PySpark 入門

並べ替えと欠損値の削除

  • .sort() または .orderBy() {{1}} を使用してデータを並べ替える
  • na.drop()でnull値の行を削除する
# Sort using the age column
df.sort("age", ascending=False).show()

# Drop missing values
df.na.drop().show()

PySpark 入門

チートシート

  • spark.read_json(): JSON からデータを読み込む
  • spark.read.schema(): スキーマを明示的に定義する
  • .na.drop(): 欠損値を含む行を削除する
  • .select(), .filter(), .sort(), .orderBy(): 基本的なデータ操作関数
PySpark 入門

練習しましょう!

PySpark 入門

Preparing Video For Download...