すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:Spark SQL、データセット、およびデータフレーム

最終更新日:Jan 11, 2025

このトピックでは、Spark SQL、データセット、およびデータフレームについて紹介し、Spark SQL を使用して基本的な操作を実行する方法について説明します。

はじめに

Spark SQL は、構造化データ処理用の Spark モジュールです。Spark の Resilient Distributed Dataset(RDD)の基本 API と比較して、Spark SQL のインターフェースは、データとコンピューティングに関するより構造化された情報を提供します。Spark SQL は、SQL クエリを実行したり、Hive テーブルからデータを読み込んだりするために使用できます。

データセットとは、分散されたデータのコレクションです。Spark 1.6 で新しく開発されたインターフェースとして、データセットは RDD と Spark SQL の両方の利点を統合しています。データセットは、Java 仮想マシン(JVM)オブジェクトから構築し、map、filterMap、filter などの関数型変換を使用して管理できます。データセット API は Scala と Java では使用できますが、Python や R では使用できません。ただし、Python と R の動的な性質により、データセット API の多くの利点は Python と R でも利用できます。

データフレームは、名前付きの列に編成されたデータセットです。これは、リレーショナルデータベースのテーブルと概念的に同等です。データフレームは、構造化データファイル、Hive テーブル、外部データベース、既存の RDD など、多くのソースから構築できます。データフレーム API は、Scala、Java、Python、および R で使用できます。Scala または Java のデータフレームは、行のデータセットによって表されます。Scala API では、データフレームは Dataset[Row] の型エイリアスです。Java API では、データフレームは Dataset<Row> で表されます。

Spark SQL を使用して基本操作を実行する

Spark SQL を使用すると、SQL ステートメントを使用してデータを管理できます。Spark は、使用する SQL ステートメントを解析、最適化、および実行します。

次の例は、Spark SQL を使用してファイルを読み取る方法を示しています。
  • 例 1:Spark はさまざまな形式のデータをサポートしています。この例では、Spark は JSON 形式のデータを読み取り、Parquet 形式のデータを生成します。サンプルコード:
    val peopleDF = spark.read.json("examples/src/main/resources/people.json")
    // JSON 形式のデータを読み込みます。
    peopleDF.write.parquet("people.parquet")
    // Parquet 形式のデータを生成します。
  • 例 2:Spark は、parquetFile テーブルから年齢が 13~19 歳の人々の名前を読み取り、名前データをデータフレームに変換し、map 変換を使用してデータフレームを読み取り可能な形式で生成します。サンプルコード:
    val namesDF = spark.sql("SELECT name FROM parquetFile WHERE age BETWEEN 13 AND 19")
    // parquetFile テーブルから名前データを読み取ります。
    namesDF.map(attributes => "Name: " + attributes(0)).show()
    // データフレームを読み取り可能な形式で生成します。