Skip to Content
スパーク定義ガイド
book

スパーク定義ガイド

by Bill Chambers, Matei Zaharia
March 2025
Intermediate to advanced
606 pages
9h
Japanese
O'Reilly Media, Inc.
Content preview from スパーク定義ガイド

第11章 データセット データセット

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

データセット は、構造化APIの基礎となる型である。我々はすでにDataFramesを扱ったが、これはRow 型のデータセット で、Sparkのさまざまな言語で利用できる。データセット は、厳密にはJava仮想マシン(JVM)言語機能であり、ScalaとJavaでのみ動作する。データセットを使うと、データセットの各行が構成するオブジェクトを定義できる。Scalaでは、これは基本的に使用できるスキーマを定義するケース・クラス・オブジェクトになり、JavaではJava Beanを定義することになる。経験豊富なユーザは、データセットをSparkの「型付きAPIセット」と呼ぶことが多い。詳しくは第4章を参照のこと。

第4章では、SparkにはStringTypeBigIntTypeStructType などの型があることを説明した。これらのSpark固有の型は、StringIntegerDouble のようなSparkの各言語で利用可能な型にマッピングされる。DataFrame APIを使用する場合、文字列や整数を作成するのではなく、Row オブジェクトを操作することで、Sparkがデータを操作してくれる。実際、Scala や Java を使っている場合、すべての "DataFrame" は実際にはRow 型のデータセットである。ドメイン固有のオブジェクトを効率的にサポートするには、「エンコーディング」と呼ばれる特殊化が必要だ。エンコーディングは、ドメイン固有の型TをSparkの内部型システムにマッピングする。

例えば、name (文字列)とage (int)の2つのフィールドを持つクラスPerson が与えられた場合、エンコーディングは実行時にPerson オブジェクトをバイナリ構造にシリアライズするコードを生成するようにSparkに指示する。DataFramesや "標準的な "Structured APIを使用する場合、このバイナリ構造はRow 。独自のドメイン固有のオブジェクトを作成する場合、Scalaではcase class 、JavaではJavaBean 。Sparkでは、このオブジェクトを(Row の代わりに)分散操作することができる。

Dataset APIを使用する際、このドメインが型を指定する行に触れるたびに、SparkはSpark Row形式を指定したオブジェクト(caseクラスまたはJavaクラス)に変換する。この変換は演算子を遅くするが、より柔軟性を提供できる。プログラミング言語を変えるほど極端なパフォーマンス・コストではないので、Pythonのユーザ定義関数(UDF)のようなものとは桁が違うが、覚えておくべき重要なことだ。

データセットをいつ使うか

、データセットを使うときにパフォーマンス・ペナルティを支払うのであれば、なぜ使う必要があるのだろうかと考えるかもしれない。もし、このことを整理してリスト化するとしたら、以下のような理由がある:

  • 実行したい演算がDataFrameの演算式で表現できない場合。

  • 型安全性が必要であり、それを達成するために性能の犠牲を厭わない場合

これらをさらに詳しく調べてみよう。これまでの章で見てきた構造化APIでは表現できない演算子もある。特に一般的ではありませんが、SQLやDataFramesではなく、特定の関数でエンコーディングしたい大規模なビジネスロジックがあるかもしれません。これはデータセットに適した使用法である。さらに、データセットAPIは型安全である。例えば2つの文字列型を減算するような、その型に対して妥当でない演算子は、実行時ではなくコンパイル時に失敗する。正しいコードと弾丸のように安全なコードを最優先するのであれば、パフォーマンスを多少犠牲にしても、これは素晴らしい選択となる。これは不正なデータからあなたを守ることはできないが、よりエレガントにデータを扱い、整理することができる。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

高性能Spark

高性能Spark

Holden Karau, Rachel Warren
生成AIの可視化

生成AIの可視化

Priyanka Vergadia, Valliappa Lakshmanan
ソフトウェア工学の基礎

ソフトウェア工学の基礎

Nathaniel Schutta, Dan Vega

Publisher Resources

ISBN: 9798341627567