本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Databricksクイックスタートガイドのコンテンツです。
Create a cluster | Databricks on AWS [2023/8/2時点]の翻訳です。
注意
これらの手順は、Unity Catalogが有効化されアップデートされたクラスターを用いた手順となっています。レガシーのクラスター作成UIにスイッチするには、クラスター作成ページの上部にあるUI Previewをクリックし、設定をオフにします。
本書では、Databricksクラスターを作成、編集する際に使用できる設定オプションを説明します。UIを用いたクラスターの作成、編集にフォーカスしています。他の手段に関しては、Clusters CLI (legacy)、Clusters API、Databricks Terraform providerをご覧ください。
クラスター作成ユーザーインタフェースによって、以下を含むクラスター設定を選択することができます:
- クラスターポリシー
- データを操作する際に使用されるセキュリティ機能を制御するアクセスモード
- ランタイムバージョン
- クラスターのワーカーとドライバーのノードタイプ
クラスター作成インタフェースへのアクセス
ユーザーインタフェースを用いてクラスターを作成するには、Data Science & EngineeringかMachine Learning環境にアクセスしている必要があります。
以下のいずれかを実施することができます:
クラスターポリシー
クラスターポリシーは、ユーザーがクラスターを作成する際に利用できる設定を制限するために使用される一連のルールです。クラスターポリシーには、特定のユーザーやグループが特定のポリシーにアクセスできるのかを制限できるACLがあります。
デフォルトでは、すべてのユーザーには、シングルマシンの計算リソースを作成できるパーソナルコンピュートポリシーへのアクセス権があります。クラスターを作成する際にパーソナルコンピュートのオプションが表示されない場合には、そのポリシーへのアクセス権がないことを意味します。パーソナルコンピュートポリシーあるいは同等の適切なポリシーへのアクセスを管理者にリクエストしてください。
ポリシーに沿ってクラスターを設定するには、Policyドロップダウンからクラスターポリシーを選択します。
クラスターアクセスモードとは?
クラスターアクセスモードは、誰がクラスターを使用でき、クラスター経由でどのデータにアクセスできるのかを制御するセキュリティ機能です。Databricksでクラスターを作成する際にはアクセスモードを選択する必要があります。
アクセスモード | ユーザーへの表示 | UCサポート | サポート言語 | 説明 |
---|---|---|---|---|
シングルユーザー | 常時 | Yes | Python, SQL, Scala, R | シングルユーザーに割り当てて利用可能。ビューから読み込みを行うには、参照するすべてのテーブルとビューに対するSELECT権限を持つ必要があります。 |
共有 | 常時(プレミアムプランが必要) | Yes | Python (Databricks Runtime 11.1以降), SQL | ユーザー間のデータ分離を用いて、複数ユーザーで使用することが可能。共有アクセスモードの制限をご覧ください。 |
分離なし共有 | 管理者は管理者設定ページでユーザー分離を強制することでこのクラスタータイプを非表示にすることが可能 | No | Python, SQL, Scala, R | 分離なし共有クラスターに対するアカウントレベルの関連設定があります。 |
カスタム | (すべての新規顧客に対しては)非表示 | No | Python, SQL, Scala, R | このオプションは、特定のアクセスモードを持たない既存のクラスターの場合にのみ表示されます。 |
クラスターのアクセスモードをSingle UserあるいはSharedに設定することで、既存クラスターをUnity Catalogの要件に適合させることができます。Unity Catalogにおける構造化ストリーミングにおいては、追加のアクセスモードの制限があります。Structured Streaming supportをご覧ください。
共有アクセスモードの制限
- クレディンシャルパススルーはサポートされません。
- initスクリプトはサポートされません。
- Databricksランタイム13.0以前ではクラスターライブラリはサポートされません。
- クラスタースコープのPythonライブラリはDatabricksランタイム13.1以降ではサポートされます。また、ワークスペースファイルとしてアップロードされたPython wheelを利用可能ですが、DBFSルートにアップロードされたライブラリを含み、DBFSファイルパスを用いて参照されるライブラリはサポートされません。Python以外のライブラリはサポートされません。Databricksクラスターライブラリをご覧ください。
- Spark-submitジョブはサポートされません。
- Databricks機械学習ランタイムはサポートされません。
- Scala、R、RDD APIやDBUtilsのようにクラウドストレージからデータを直接読み込むクライアントを使用することはできません。
- ユーザー定義関数(UDF)では以下の制限があります。
- Hive、Scala UDFを使うことはできません。
- Databricksランタイム13.1以前では、UDAF、UDTF、Pandas on Spark(
applyInPandas
とmapInPandas
)を含むPython UDFを使うことはできません。Databricksランタイム13.2以降ではPython UDFがサポートされています。 - クラスターノードでのコマンドは、ファイルシステムのセンシティブな部分からのアクセスや、ポート80、443以外からのネットワーク接続の作成が禁止された低権限ユーザーとして実行しなくてはなりません。
これらの制限を回避しようとする試みは失敗します。これらの制限は、ユーザーがクラスターを通じて権限のないデータへのアクセスを拒否するために適用されています。
注意
- 多くのユースケースにおいては、クラスターを設定するためのinitスクリプトに変わって活用できる代替機能があります。
- ワークスペースでinitスクリプト、クラスターライブラリ、JAR、ユーザー定義関数が必要な場合には、プライベートプレビューでこれらの機能を使用する権利を得ることができるかもしれません。プライベートプレビューの使用条項とアクセスのリクエストに関しては、こちらにサインアップしてください。
Databricksランタイムのバージョン
Databricksランタイムはお使いのクラスターで実行される一連のコアコンポーネントです。すべてのDatabricksランタイムバージョンには、Apache Sparkが含まれ、使いやすさ、パフォーマンス、セキュリティを改善するコンポーネントとアップデートが追加されます。Databricks runtimesをご覧ください。
クラスターを作成、編集する際に、Databricks Runtime Versionドロップダウンを用いて、クラスターのランタイムとバージョンを選択します。
Photon高速化
PhotonはDatabricksランタイム9.1 LTS以降で利用できます。
Photon高速化を有効化するには、Use Photon Accelerationチェックボックスを選択します。
必要であれば、Worker TypeとDriver Typeのドロップダウンでインスタンスタイプを指定することができます。
クラスターのノードタイプ
クラスターは、1台のドライバーノードと0台以上のワーカーノードから構成されます。デフォルトではドライバーノードはワーカーノードと同じインスタンスタイプを使用しますが、ドライバーノードとワーカーノードで別々のクラウドプロバイダーインスタンスタイプを選択することができます。メモリーを大量に必要とするワークロードや計算を大量に行うワークロードのように、異なるユースケースに異なるファミリーのインスタンスタイプがフィットします。
ドライバーノード
ドライバーノードはクラスターにアタッチされているノートブックのすべての状態情報を保持します。また、ドライバーノードはSparkContextを保持し、クラスター上のノートブックやライブラリから実行するすべてのコマンドを解釈し、Sparkのエグゼキューターと調整を行うApache Sparkマスターを実行します。
ドライバーノードタイプのデフォルト値はワーカーノードタイプと同じです。ノートブックでSparkワーカーから大量のデータをcollect()
し、分析を行う場合にはより大量のメモリーを持つ大規模なドライバーノードタイプを選択することができます。
ティップス
ドライバーノードはアタッチされているノートブックのすべての状態情報を保持するので、不要なノートブックはドライバーノードからデタッチするようにしてください。
ワーカーノード
DatabricksのワーカーノードはSparkエグゼキューターとクラスターを適切に機能させるために必要なその他のサービスを実行します。Sparkでワークロードを分散させる際、分散されたすべての処理はワーカーノードで行われます。Databricksでは1台のワーカーノードあたり1つのエグゼキューターを実行します。このため、Databricksアーキテクチャの文脈においては、エグゼキューターとワーカーの用語は同じ意味で使用されます。
ティップス
Sparkジョブを実行するには、最低1台のワーカーノードが必要です。クラスターにワーカーがない場合にはドライバーノードで非Sparkコマンドを実行できますが、Sparkコマンドは失敗します。
ワーカーノードのIPアドレス
Databricksはそれぞれのワーカーノードに2つのプライベートIPアドレスを付与て起動します。ノードのプライマリープライベートIPアドレスでは、Databricksの内部トラフィックをホストします。セカンダリーのプライベートIPアドレスはクラスター内通信のためにSparkコンテナによって使用されます。このモデルによって、Databrickは同じワークスペースにある複数のクラスター間の分離を実現します。
GPUインスタンスタイプ
ディープラーニングのように高パフォーマンスを必要とする困難なタスクにおいては、GPUによって高速化されたクラスターをサポートしています。詳細については、DatabricksのGPU有効化クラスターをご覧ください。
警告!
2023/8/31以降、Amazon EC2 P2インスタンスを用いたクラスターの起動をサポートしません。
AWS Gravitonインスタンスタイプ
Databricksでは、AWS Gravitonプロセッサを用いたクラスターをサポートしています。ARMベースのAWS Gravitonインスタンスは、現行世代のx86ベースのインスタンス以上のコストパフォーマンスを提供するためにAWSによって設計されています。DatabricksのAWS Graviton有効化クラスターをご覧ください。
クラスターのサイズとオートスケーリング
Databricksクラスターを作成する際、クラスターに固定数のワーカーを割り当てることも、ワーカーの最小数と最大数を指定することができます。
固定サイズのクラスターを指定した際、Databricksはクラスターが指定された数のワーカーを持つことを保証します。ワーカー数の範囲を指定した場合、Databricksはジョブの実行に必要な適切な数のワーカーを選択します。これはオートスケーリングと呼ばれるものです。
オートスケーリングによって、Databricksは皆様のジョブの特定を考慮して動的にワーカーを再配置します。皆様のパイプラインの特定の箇所では、他よりも計算資源の需要が高い場合があり、その際にはDatabricksは皆様のジョブのこれらのフェーズを通じてワーカーを自動て追加します(そして、不要になったら削除します)。
オートスケーリングによって、ワークロードにマッチするクラスターを配備する必要がなくなるので、高いクラスターの利用率を達成することが容易になります。特にこれは、(一日を通じたデータセットの探索のように)時間と共に要件が変換するワークロードで適用されますが、要件が不明な一度限りの短時間のワークロードでも適用されることがあります。このように、オートスケーリングは以下の2つのメリットを提供します:
- 固定サイズ、リソース不足のクラスターと比較してワークロードを高速に実行。
- オートスケーリングクラスターは、静的サイズのクラスターと比較して全体コストを削減。
クラスターとワークロードの定常的なサイズに応じて、オートスケーリングは同時にこれらのメリットの一つあるいは両方を提供します。クラウドプロバイダーがインスタンスを停止した際には、クラスターサイズが選択したワーカーの最小数を下回ることがあります。この場合、Databricksはワーカーの最小数を維持するために、インスタンスの再配備をリトライします。
注意
spark-submit
ジョブではオートスケーリングは利用できません。
注意
計算資源のオートスケーリングには、構造化ストリーミングワークロードでクラスターサイズをスケールダウンする制限があります。ストリーミングワークロードでは、強化オートスケーリングを持つDelta Live Tablesを活用することをお勧めします。What is Enhanced Autoscaling?をご覧ください。
最適化オートスケーリングと標準オートスケーリング
Databricksでは2つのタイプのクラスターノードスケーリングを提供します: 最適化と標準オートスケーリングです。最適化オートスケーリングはプレミアム、エンタープライズプランでのみ利用できます。Platform tiersをご覧ください。
最適化オートスケーリングは以下で使用されます:
- すべてのジョブクラスター
- プレミアム、エンタープライズプランでDatabricksランタイムバージョン6.4以降が稼働しているインタラクティブクラスター
標準オートスケーリングは以下で使用されます:
- スタンダードプランワークスペース
- Databricksランタイム6.3以前のインタラクティブクラスター
最適化オートスケーリングの挙動
- 2ステップから最小値から最大値にスケールアップ。
- シャッフルファイルの状態を参照することで、クラスター外アイドル状態でなかったとしてもスケールダウンすることが可能。
- 現在のノードのパーセンテージに基づいたスケールダウン。
- ジョブクラスターでは、過去40秒以上において使用率の低いクラスターをスケールダウン。
- all-purposeクラスターでは、過去150秒以上において使用率の低いクラスターをスケールダウン。
- Spark設定プロパティ
spark.databricks.aggressiveWindowDownS
では、クラスターがどれだけの頻度でダウンスケーリングの決定を行うのかを秒で指定します。値を増やすと、クラスターのスケールダウンはよりゆっくりしたものとなります。最大値は600です。
標準オートスケーリングの挙動
- 8ノードの追加からスタートします。そして、指数関数的にスケールアップし、最大値に到達するには多くのステップを必要とします。
- 90%のノードが10分間ビジーでなく、クラスターが最低でも30秒アイドル状態だった場合にはスケールダウンします。
- 1ノードからスタートして、指数関数的にスケールダウンします。
オートスケーリングの有効化と設定
お使いのクラスターを自動でリサイズするようにするためには、クラスターでオートスケーリングを有効化し、ワーカーの最小値、最大値を指定します。
Databricksが自動でクラスターのサイズを調整できる様にするには、クラスターのオートスケーリングを有効化し、ワーカーの最小値、最大値を指定します。
-
オートスケーリングを有効化します。
-
クラスターを実行している際、クラスター詳細ページには割り当てられたワーカーの数が表示されます。割り当てられたワーカーの数とワーカー設定を比較することで、必要に応じて調整を行うことができます。
重要!
インスタンスプールを使っているのであれば:
- プールにおけるアイドルインスタンスの最小数以下のクラスターサイズになっていることを確認してください。これよりも大きい場合、クラスターの起動時間はプールを使用しないクラスターと同じものになります。
- クラスターの最大サイズはプールの最大キャパシティ以下になる様にしてください。
オートスケーリングの例
静的なクラスターをオートスケーリングクラスターに再設定した場合、Databricksは即時にクラスターを最小、最大の境界に収まるようにリサイズし、オートスケーリングをスタートします。例として、以下のテーブルでは特定の初期サイズのクラスターに対して、5ノード、10ノードの間にオートスケールさせるように再設定した際に何が起きるのかを示しています。
初期サイズ | 再設定後のサイズ |
---|---|
6 | 6 |
12 | 10 |
3 | 5 |
インスタンスプロファイル
AWSキーを使うことなしにセキュアにAWSリソースにアクセスするためには、インスタンスプロファイルを用いてDatabricksクラスターを起動することができます。インスタンスプロファイルの作成、設定方法に関しては、Databricksにおけるインスタンスプロファイルを用いたS3バケットへのセキュアなアクセスをご覧ください。インスタンスプロファイルを作成したら、Instance Profileドロップダウンリストから選択します。
注意
インスタンスプロファイルを用いてクラスターが起動すると、このロールによってコントロールされる背後のリソースには、このクラスターへのアクセス権を持つ誰でもアクセスできるようになります。望まないアクセスを防御するには、クラスターへのアクセス権を制限するためにCluster access controlを活用することができます。
ローカルストレージのオートスケーリング
クラスター作成時に固定数のEBSボリュームを割り当てたくない場合には、ローカルストレージのオートスケーリングを使用します。ローカルストレージのオートスケーリングによって、Databrikcsはお使いのクラスターのSparkワーカーで利用できるディスクの空き容量を監視します。ワーカーのディスクが減少し始めたら、ディスク空き容量が枯渇する前にDatabricksは自動で新たなEBSボリュームをワーカーにアタッチします。インスタンスあたり最大5TBのEBSボリューム(インスタンスのローカルストレージを含む)をアタッチします。
ストレージのオートスケーリングを設定するには、Enable autoscaling local storageを選択します。
インスタンスにアタッチされたEBSボリュームは、インスタンスがAWSに返却された場合にのみデタッチされます。すなわち、クラスターが稼働している限り、インスタンスからEBSボリュームがデタッチされません。EBS使用量をスケールダウンするには、計算資源のオートスケーリングと自動停止が設定されたクラスターでこの機能を使用することをお勧めします。
注意
Databricksではインスタンスのローカルストレージを拡張するためにThroughput Optimized HDD (st1)を使用します。これらのボリュームに対するデフォルトのAWSのキャパシティ制限は20TiBです。この制限に到達しないように、管理者は利用要件に基づいてこの制限の増加をリクエストする必要があります。
ローカルディスクの暗号化
プレビュー
この機能はパブリックプレビューです。
クラスターを実行する際に使用するいくつかのインスタンスタイプでは、ローカルにアタッチされたディスクが存在します。Databricksは、シャッフルデータや短期データをこれらのローカルにアタッチされたディスクに保存します。クラスターのローカルディスクに一時的に保存されるシャッフルデータを含む、全てのストレージタイプにおいて保存されている全てのデータが暗号化される様に、ローカルディスクの暗号化を有効化することができます。
重要!
ローカルボリュームとの暗号化データの読み書きによるパフォーマンスのインパクトによって、ワークロードが遅くなる可能性があります。
ローカルディスクの暗号化が有効化されると、Databricksはローカルにそれぞれのクラスターノードに固有の暗号化キーを生成し、ローカルディスクに保存される全てのデータの暗号化にキーを使用します。キーのスコープはそれぞれのクラスターノード固有で、クラスターノードとともに破棄されます。このライフタイムの期間において、暗号化、複合化のためにキーはメモリー上に保持され、ディスク上に暗号化された状態で格納されます。
ローカルディスクの暗号化を有効化するには、Clusters APIを使用する必要があります。クラスターの作成、編集の際に以下を設定します。
{
"enable_local_disk_encryption": true
}
これらのAPIの呼び出し方の例含めたCluster APIのリファレンスに関しては、Create、Editを参照ください。
以下がローカルディスク暗号化を有効化したcluster createの呼び出し例です。
{
"cluster_name": "my-cluster",
"spark_version": "7.3.x-scala2.12",
"node_type_id": "r3.xlarge",
"enable_local_disk_encryption": true,
"spark_conf": {
"spark.speculation": true
},
"num_workers": 25
}
クラスタータグ
クラスタータグによって、皆様の組織における様々なグループで使用されるクラウドリソースのコストを容易にモニタリングできるようになります。クラスターを作成する際にキーバリューのペアとしてタグを指定することができ、DatabricksではVMやディスクボリュームのようなクラウドリソースやDBU使用量レポートにこれらのタグを適用します。
プールから起動されたクラスターでは、カスタムのクラスタータグはDBU使用量レポートにのみ適用され、クラウドリソースには伝播しません。
プールとクラスタータグがどのように動作するのかに関しては、Monitor usage using cluster and pool tagsをご覧ください。
クラスタータグを設定するには:
- Tagsセクションで、カスタムタグごとにキーバリューペアを追加します。
- Addをクリックします。
AWSの設定
クラスターのAWSインスタンスを設定する際、アベイラビリティゾーン、最大のスポット価格、EBSボリュームタイプを選択することができます。これらの設定は、Advanced Optionsトグルの中のInstanceタブにあります。
アベイラビリティゾーン
この設定によって、クラスターで使用したいアベイラビリティゾーン(AZ)を指定することができます。デフォルトでは、この設定はautoとなっており、ワークスペースのサブネットで利用できるIPに基づいてAZが自動で選択されます。AWSがキャパシティ不足エラーを返した際には、Auto-AZは他のアベイラビリティゾーンでリトライします。
お客様の組織で特定のアベイラビリティゾーンでリザーブドインスタンスを購入している場合には、クラスターに対して特定のアベイラビリティゾーン(AZ)を選択することは特に有用となります。詳細に関してはAWS availability zonesを参照ください。
スポットインスタンス
スポットインスタンスを使用し、オンデマンドインスタンスの価格に対するパーセンテージとしてスポットインスタンスを起動する際に使用するスポットインスタンスの最高価格を指定することができます。デフォルトでは、オンデマンド価格の100%が最高価格となります。詳細はAWS spot pricingを確認ください。
EBSボリューム
ここでは、ワーカーノードのデフォルトEBSボリューム設定、シャッフルボリュームの追加方法、Databtricksが自動でEBSボリュームを配置する様に設定する方法を説明します。
EBSボリュームを設定するには、クラスター設定のInstancesタブをクリックし、EBS Volume Typeドロップダウンリストからオプションを選択します。
デフォルトEBSボリューム
Databricksはすべてのワーカーノードに対して以下のEBSボリュームを配備します。
- ホストのオペレーティングシステムとDatabricksの内部サービスでのみ使用される30GBの暗号化EBSインスタンスルートボリューム。
- Sparkワーカーで使用される150GBの暗号化EBSコンテナルートボリューム。ここでSparkサービスとログがホストされます。
- (HIPAAのみ)Databricks内部サービス向けのログを格納する75GBの暗号化EBSワーカーログボリューム。
EBSシャッフルボリュームの追加
シャッフルボリュームを追加するには、EBSボリュームタイプドロップダウンリストでGeneral Purpose SSDを選択します。
デフォルトでは、Sparkのシャッフルはインスタンスのローカルディスクに出力されます。ローカルディスクを持たないインスタンスタイプにおいて、あるいは、Sparkのシャッフルストレージスペースを拡張したい場合には、追加のEBSボリュームを指定することができます。これは特に、Sparkジョブが大容量のシャッフルアウトプットを生成する際に、ディスクスペースエラーを防ぐために有効です。
Databricksはオンデマンド、スポットインスタンスの両方でEBSボリュームを暗号化します。詳細は、AWS EBS volumesを参照ください。
(オプション)顧客管理キーによるDatabricks EBSボリュームの暗号化
オプションで、クラスターのEBSボリュームを顧客管理キーで暗号化することができます。
Databricksワークスペースストレージに対する顧客管理キーの適用を参照ください。
AWS EBSの制限
全てのクラスターにおける全てのワーカーに対するランタイムの要件を十分に満足できる様にAWS EBSのリミットが十分に高いものであることを確認してください。デフォルトのEBSリミットに関する情報、および、リミットの変更方法に関しては、Amazon Elastic Block Store (EBS) Limitsを参照ください。
AWS EBS SSDボリュームタイプ
AWS EBS SSDのボリュームタイプに対してgp2あるいはgp3を選択することができます。これを行うためには、Manage SSD storageを参照ください。gp2に比べてコストを削減できるのでgp3に切り替えることをお勧めします。
注意
デフォルトでは、Databricksではgp3ボリュームのIOPSとスループットIOPSを同じボリュームサイズのgp2ボリュームの最大パフォーマンスにマッチするように設定します。
gp2、gp3に関する技術情報については、Amazon EBS volume typesを参照ください。
Spark設定
Sparkジョブをファインチューニングするには、クラスター設定でSpark configuration propertiesをカスタマイズします。
- クラスター設定ページでAdvanced Optionsトグルをクリックします。
-
Sparkタブをクリックします。
Spark configで、一行ごとにキーバリューのペアとして設定プロパティを入力します。
Clusters APIを用いてクラスターを設定する際には、Create cluster requestあるいはEdit cluster requestにおけるspark_conf
フィールドにSparkプロパティを設定します。
全てのクラスターに対してSparkプロパティを設定するには、グローバルinitスクリプトを使用します。
シークレットからSpark設定プロパティの取得
パスワードの様なセンシティブな情報は平文ではなくシークレットに保存することをお勧めします。Spark設定でシークレットを参照するには、以下の構文を使用します。
spark.<property-name> {{secrets/<scope-name>/<secret-name>}}
例えば、secrets/acme_app/password
のシークレットに保存されている値を、password
というSpark設定プロパティに設定するには以下の設定を行います。
spark.password {{secrets/acme-app/password}}
詳細については、Syntax for referencing secrets in a Spark configuration property or environment variableをご覧ください。
環境変数
クラスターで動作するinitスクリプトからアクセスできる環境変数を設定することができます。また、Databricksではinitスクリプトで使用できる定義済み環境変数を提供しています。定義済み環境変数を上書きすることはできません。
Clusters APIエンドポイントのCreate cluster requestやEdit cluster requestのspark_env_vars
フィールドを使って環境変数を設定することもできます。
クラスターログデリバリー
クラスターを作成する際、Sparkドライバーノード、ワーカーノード、イベントに対するログを配信する場所を指定することができます。指定された場所に5分間隔でログが配信されます。クラスターが停止されると、Databricksはクラスターが停止されるまでに生成された全てのログが配信されることを保証します。
ログの格納場所はクラスターIDに依存します。指定された場所がdbfs:/cluster-log-delivery
の場合、0630-191345-leap375
に対するクラスターログはdbfs:/cluster-log-delivery/0630-191345-leap375
に配信されます。
クラスターログ配信の場所を設定するには、以下の手順を踏みます。
- クラスター設定ページで、Advanced Optionsトグルをクリックします。
-
Loggingタブをクリックします。
- destinationのタイプを選択します。
- クラスターログのパスを入力します。
配信先のS3バケット
S3を格納場所に選択した際には、バケットにアクセスできる様に設定されたインスタンスプロファイルをクラスターに設定する必要があります。このインスタンスプロファイルにはPutObject
とPutObjectAcl
の両方が必要となります。サンプルのインスタンスプロファイルを以下に示します。どのようにインスタンスプロファイルを設定するのかについては、Databricksにおけるインスタンスプロファイルを用いたS3バケットへのセキュアなアクセスを参照ください。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<my-s3-bucket>"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::<my-s3-bucket>/*"
]
}
]
}
注意
この機能はREST APIでも使用できます。Clusters APIとCluster log delivery examplesを参照ください。