[TIL Day 51]ビッグデータ:SparkSQLを使用してデータを分析する


SparkSQLとは?


構造化データ処理用Sparkモジュール

  • 特長
    -インタラクティブSparkシェルの提供
    -河川図データに基づいて作成されたHiveクエリは、変更なしで最大100倍のパフォーマンスを提供します.
    -データフレームはSQLで処理可能
  • RDDデータをデータフレームに変換する処理可能
  • 外部データ(記憶、リレーショナルデータベース)をデータフレームに変換する処理可能
  • .
  • データフレームはテーブルとなり(特定の関数を使用)、SQL関数
  • を使用する.

  • SparkSQL使用法SparkSQLしよう:外部データベースへの接続がいぶでーたべーすへのせつぞく
    SparkSessionのread関数を使用して、テーブルまたはSQL結果をデータフレームに読み込みます.
  • Redshift接続例

  • SparkSessionを作成する場合、外部データベースにJDBC jar
  • を指定します.
    from pyspark.sql import SparkSession
    
    spark = SparkSession \
        .builder \
        .appName("Python Spark SQL basic example") \
        .config("spark.jars", "/usr/local/lib/python3.6/dist-packages/pyspark/jars/RedshiftJDBC42-no-awssdk-1.2.20.1043.jar") \
        .getOrCreate()
    SparkSessionのread関数
  • を呼び出す
  • ログイン情報と取得するテーブルまたはSQLを指定します.
  • の結果は、データフレーム
  • に戻る.
     df_user_session_channel = spark.read \
        .format("jdbc") \
        .option("driver", "com.amazon.redshift.jdbc42.Driver") \
        .option("url", "jdbc:redshift://learnde.cduaw970ssvt.ap-northeast-2.redshift.amazonaws.com:5439/prod?user=guest&password=Guest1!*") \
        .option("dbtable", "raw_data.user_session_channel") \
        .load()
  • より前に返されるデータフレームのテーブル名を指定します.
  • データフレームに基づいてテーブルビューを作成する:テーブル
  • を作成する
  • createOrReplaceTempView:Spark Sessionが生きている間に
  • が存在する
  • createGlobalTempView:Sparkドライバがまだ生きている間に
  • が存在する
  • SparkSessionのSQL関数を使用
  • SparkSessionのSQL関数は、データフレーム形式でSQL結果
  • を受信する
    namegender_df.createOrReplaceTempView("namegender")
    namegender_group_df = spark.sql("
        SELECT gender, count(1) FROM namegender GROUP BY 1
    ")
    print(namegender_group_df.collect())