0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

これは見逃していました。

これまでは、displayを使うか、Pandas on Sparkかpandasデータフレームに変換してプロットしていたので、この機能は嬉しいです。リリースノートにも記載されていました。

Screenshot 2025-06-21 at 12.04.47.png

PySparkネイティブプロッティングとは

Databricks Runtime 17.0で導入されたPySpark Native Plottingは、PySparkデータフレームから直接グラフを作成できる機能です。これまでPandasへの変換やサードパーティツールが必要だった可視化作業が、PySparkの中で完結できるようになりました。この機能は、大規模データの効率的なサンプリングと集計を自動的に行い、Plotlyを使用してインタラクティブな可視化を提供します。

機能概要

PySpark Native Plottingは、PySparkデータフレームに.plotプロパティを追加し、様々な種類のグラフを直接作成できる機能です。

主な特徴

特徴 説明
統合されたAPI PySparkデータフレームから直接プロット可能
自動最適化 大規模データを自動的にサンプリング・集計
豊富な可視化タイプ 折れ線、棒、散布図、ヒストグラムなど多様なグラフに対応
インタラクティブ性 Plotlyベースの対話的な可視化
パフォーマンス SQLレベルの最適化により高速処理を実現

サポートされているグラフタイプ

基本的なグラフタイプ:
├── line(折れ線グラフ)
├── bar(棒グラフ)
├── barh(横棒グラフ)
├── area(面グラフ)
├── scatter(散布図)
├── pie(円グラフ)
├── box(箱ひげ図)
├── hist(ヒストグラム)
└── kde(カーネル密度推定)

データ処理フロー図

PySparkデータフレーム
    ↓
[自動サンプリング/集計]
    ↓
[SQL最適化エンジン]
    ↓
[Plotly可視化エンジン]
    ↓
インタラクティブグラフ

メリット、嬉しさ

1. ワークフローの簡素化

従来の方法(複雑):

# PySparkデータをPandasに変換してからプロット
pandas_df = spark_df.toPandas()
pandas_df.plot(kind='bar')

新しい方法(シンプル):

# PySparkデータフレームから直接プロット
spark_df.plot.bar()

2. パフォーマンスの向上

比較項目 従来の方法 PySpark Native Plotting
データ転送 全データをドライバーに収集 必要な集計結果のみ転送
メモリ使用量 大規模データでOOMリスク 効率的なサンプリング
処理速度 データ量に比例して遅延 分散処理で高速

3. 統一されたエクスペリエンス

開発者の利点:
├── 学習コストの削減(Pandas APIと同じインターフェース)
├── コードの一貫性向上
├── エラーの削減(型変換不要)
└── デバッグの容易さ

ウォークスルー

DBR 17.0のクラスターを使います

Screenshot 2025-06-21 at 12.04.02.png

元のブログ記事に沿ってデータフレームを作成します。アシスタントに頼んだらコード作ってkれました。

Screenshot 2025-06-21 at 12.07.07.png

# サンプルデータの作成
data = [
    ("電子機器", 20000, 5000, 25.0),
    ("家具", 15000, 2000, 13.33),
    ("オフィス用品", 12000, 3000, 25.0),
    ("衣類", 8000, 1000, 12.5),
    ("食品", 10000, 2500, 25.0),
    ("書籍", 6000, 1500, 25.0),
    ("スポーツ", 7000, 2000, 28.57),
    ("おもちゃ", 5000, 500, 10.0)
]

# スキーマの定義
columns = ["カテゴリー", "売上", "利益", "利益率"]

# DataFrameの作成
df = spark.createDataFrame(data, columns)

# DataFrameの表示
display(df)

Screenshot 2025-06-21 at 12.07.40.png

散布図をプロットします。

fig = df.plot.scatter(x="売上",
    y="利益",
    size="利益率",
    text="カテゴリー",
    hover_name="カテゴリー",
    color="利益率",  # 利益率に基づくカラースケールを追加
    color_continuous_scale="Plasma",  # 視覚的に魅力的なカラースケールを使用
)
fig

おおー。日本語の列名でも動きます。
Screenshot 2025-06-21 at 12.09.41.png

棒グラフ。

# 売上高と利益を同時に表示
df.plot.bar(x="カテゴリー", y=["売上", "利益"])

newplot (1).png

折れ線グラフも。

import datetime

# サンプルのPySpark DataFrameを作成
data = [
    (datetime.date(2025, 1, 1), 10),
    (datetime.date(2025, 1, 2), 12),
    (datetime.date(2025, 1, 3), 15),
    (datetime.date(2025, 1, 4), 13),
    (datetime.date(2025, 1, 5), 18)
]
df = spark.createDataFrame(data, ["date", "value"])

# .plotアクセサを使用して折れ線グラフを作成
df.plot.line(x="date", y="value", title="時系列データ")

newplot.png

まとめ

PySpark Native Plottingは、ビッグデータの可視化における大きな進歩です。この機能により、データエンジニアやデータサイエンティストは、データの変換や外部ツールの使用なしに、PySparkの中で完結した分析ワークフローを構築できます。

特に重要なポイントは以下の3つです:

  1. シンプルさ: Pandas風のAPIにより、学習コストを最小限に抑えながら強力な可視化機能を利用可能
  2. パフォーマンス: 分散処理とSQL最適化により、大規模データでも高速な可視化を実現
  3. 統合性: PySparkエコシステムとシームレスに統合され、エンドツーエンドのデータパイプラインを構築可能

今後もPySpark Native Plottingは機能拡張が予定されており、より多様な可視化ニーズに対応していくことが期待されます。ぜひDatabricks Runtime 17.0で、この革新的な機能を体験してみてください。

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?