

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# PySpark 分析テンプレート
<a name="pyspark-analysis-templates"></a>

PySpark 分析テンプレートでは、カスタムライブラリとオープンソースライブラリを使用するには、Python ユーザースクリプトとオプションの仮想環境が必要です。これらのファイルはアーティファクトと呼ばれます。

分析テンプレートを作成する前に、まずアーティファクトを作成し、そのアーティファクトを Amazon S3 バケットに保存します。 は、分析ジョブの実行時にこれらのアーティファクト AWS Clean Rooms を使用します。 は、ジョブの実行時に AWS Clean Rooms のみアーティファクトにアクセスします。

PySpark 分析テンプレートでコードを実行する前に、 はアーティファクトを次のように AWS Clean Rooms 検証します。
+ テンプレートの作成時に使用する特定の S3 オブジェクトバージョンの確認
+ アーティファクトの SHA-256 ハッシュの検証 
+ アーティファクトが変更または削除されたジョブの失敗

**注記**  
の特定の PySpark 分析テンプレートのすべての結合アーティファクトの最大サイズ AWS Clean Rooms は 1 GB です。

## PySpark 分析テンプレートのセキュリティ
<a name="pyspark-analysis-templates-security"></a>

安全なコンピューティング環境を維持するために、 は 2 層コンピューティングアーキテクチャ AWS Clean Rooms を使用して、ユーザーコードをシステムオペレーションから分離します。このアーキテクチャは、Membrane とも呼ばれる Amazon EMR Serverless Fine Grained Access Control テクノロジーに基づいています。詳細については、[「Membrane — Safe and performant data access controls in Apache Spark in the presence of imperative code](https://www.amazon.science/publications/membrane-safe-and-performant-data-access-controls-in-apache-spark-in-the-presence-of-imperative-code)」を参照してください。

コンピューティング環境コンポーネントは、個別のユーザースペースとシステムスペースに分割されます。ユーザースペースは、PySpark 分析テンプレートで PySpark コードを実行します。 は、システムスペース AWS Clean Rooms を使用してジョブの実行を有効にします。これには、顧客が提供するサービスロールを使用してデータを読み取ってジョブを実行し、列の許可リストを実装することが含まれます。このアーキテクチャの結果として、少数の Spark SQL および PySpark DataFrames APIs を含むシステムスペースに影響を与える顧客の PySpark コードがブロックされます。

## での PySpark の制限 AWS Clean Rooms
<a name="pyspark-limitations"></a>

顧客が承認済みの PySpark 分析テンプレートを送信すると、 は顧客がアクセスできない独自の安全なコンピューティング環境でそれ AWS Clean Rooms を実行します。コンピューティング環境は、安全なコンピューティング環境を維持するために、ユーザースペースとシステムスペースを備えたコンピューティングアーキテクチャを実装します。詳細については、「[PySpark 分析テンプレートのセキュリティ](#pyspark-analysis-templates-security)」を参照してください。

PySpark を使用する前に、次の制限事項を考慮してください AWS Clean Rooms。

**制限事項**
+ DataFrame 出力のみがサポートされています
+ ジョブ実行ごとに 1 つの Spark セッション

**サポートされていない機能**
+ **データ管理**
  + Iceberg テーブル形式
  + LakeFormation マネージドテーブル
  + 耐障害性のある分散データセット (RDD)
  + Spark ストリーミング
  + ネストされた列のアクセスコントロール
+ **カスタム関数と拡張機能**
  + ユーザー定義テーブル関数 (UDTFs)
  + HiveUDFs
  + ユーザー定義関数のカスタムクラス
  + カスタムデータソース
  + 追加の JAR ファイル:
    + Spark 拡張機能
    + Connector
    + メタストア設定
+ **モニタリングと分析**
  + Spark ログ記録
  + Spark UI
  + `ANALYZE TABLE` コマンド

**重要**  
これらの制限は、ユーザースペースとシステムスペース間のセキュリティ分離を維持するために設定されています。  
コラボレーション設定に関係なく、すべての制限が適用されます。  
今後の更新により、セキュリティ評価に基づく追加機能のサポートが追加される場合があります。

## ベストプラクティス
<a name="python-best-practices"></a>

PySpark 分析テンプレートを作成するときは、次のベストプラクティスをお勧めします。
+ 分析テンプレートは、 [での PySpark の制限 AWS Clean Rooms](#pyspark-limitations) を念頭に置いて設計します。
+ まず、開発環境でコードをテストします。
+ サポートされている DataFrame オペレーションのみを使用します。
+ DataFrame の制限に対応するために出力構造を計画します。

アーティファクトを管理するには、次のベストプラクティスをお勧めします。
+ すべての PySpark 分析テンプレートアーティファクトを専用の S3 バケットまたはプレフィックスに保持します。
+ さまざまなアーティファクトバージョンにクリアバージョンの命名を使用します。
+ アーティファクトの更新が必要な場合は、新しい分析テンプレートを作成します。
+ どのテンプレートがどのアーティファクトバージョンを使用するかのインベントリを維持します。

Spark コードを記述する方法の詳細については、以下を参照してください。
+ [Apache Spark の例](https://spark.apache.org/examples.html)
+ *Amazon EMR リリースガイド*の[「Spark アプリケーションの記述](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-application.html)」
+ [チュートリアル: ユーザーガイドの AWS Glue for Spark スクリプトの記述](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-intro-tutorial.html) *AWS Glue *

以下のトピックでは、分析テンプレートを作成して確認する前に Python ユーザースクリプトとライブラリを作成する方法について説明します。

**Topics**
+ [PySpark 分析テンプレートのセキュリティ](#pyspark-analysis-templates-security)
+ [での PySpark の制限 AWS Clean Rooms](#pyspark-limitations)
+ [ベストプラクティス](#python-best-practices)
+ [ユーザースクリプトの作成](create-user-script.md)
+ [PySpark 分析テンプレートでのパラメータの操作](pyspark-parameter-handling.md)
+ [仮想環境の作成 (オプション)](create-virtual-environment.md)
+ [ユーザースクリプトと仮想環境を S3 に保存する](store-artifacts-in-s3.md)
+ [PySpark 分析テンプレートの作成](create-pyspark-analysis-template.md)
+ [PySpark 分析テンプレートの確認](review-pyspark-analysis-template.md)