# Spark UniversalでAzure Synapse Analytics接続パラメーターを定義

Spark Batchジョブの[Run] (実行)ビューの[Spark configuration] (Spark設定)タブで、Spark Universalを使ってAzure Synapse Analytics接続設定を完成させます。この設定はジョブごとに有効です。

情報メモ重要: Sparkプールlは、Talend StudioのSparkジョブでサポートされているAzure Synapse Analyticsの唯一のサービスです。

## 始める前に

SynapseワークスペースとApache Sparkプールが設定済みであること。詳細は、Microsoftの公式ドキュメンテーションで[Creating a Synapse workspace](https://docs.microsoft.com/en-US/azure/synapse-analytics/get-started-create-workspace) (英語のみ)と[Create a new serverless Apache Spark pool using the Azure portal](https://docs.microsoft.com/en-US/azure/synapse-analytics/quickstart-create-apache-spark-pool-portal) (英語のみ)をご覧ください。

## 手順

1. Azure Synapseへの接続に使う基本的な設定情報を入力します。
   | パラメーター | 使用方法 |
   | --- | --- |
   | [Endpoint] (エンドポイント) | Azure SynapseのアカウントからDevelopment endpointを入力します。これはAzure SynapseワークスペースのOverviewセクションにあります。 |
   | [Authorization token] (認証トークン) | Azure Synapseアカウント用に生成されたトークンを入力します。<br><br>情報メモ注: トークンを生成する場合は次のコマンドを入力する必要があります:curl -X post -H "Content-Type: application/x-www-form-urlencoded" -d 'client\_id=&lt;YourClientID&gt;&scope=https://dev.azuresynapse.net/.default&client\_secret=&lt;YourClientSecret&gt;&grant\_type=client\_credentials' 'https://login.microsoftonline.com/&lt;YourTenantID&gt;/oauth2/v2.0/token'<br><br>クライアントID、クライアントシークレット、テナントIDはAzureポータルから取得できます。<br><br>Azure Synapseへの認証はAzure Active Directoryアプリケーションを介して行われます。Azure Active Directoryへの登録方法に関する詳細は、Microsoftの公式ドキュメンテーションで[Use the portal to create an Azure AD application and service principal that can access resources](https://docs.microsoft.com/en-US/azure/active-directory/develop/howto-create-service-principal-portal) (英語のみ)をご覧ください。<br><br>情報メモ重要: このトークンの有効期間は1時間のみです。1時間が経過しても新しいトークンがを再生成されない場合、エラー(401 - Not authorized)が発生する可能性があります。 |
   | [Apache Spark pools] (Apache Sparkプール) | 使用するApache Sparkプールの名前を二重引用符で囲んで入力します。<br><br>情報メモ注: Azure Synapseワークスペースで次の点を確認します:<br><br><ul> <li>Apache Sparkプールの作成時に、[Basic settings] (基本設定)の<span>[Autoscale] (自動スケーリング)</span>オプションと[Additional settings] (追加設定)の[<span>Automatic pausing] (自動一時停止)</span>オプションが有効になっていること。</li> <li>選択されたApache Sparkバージョンが<span>3.0 (preview)</span>に設定されていること。                                     </li> </ul> |
   | [Poll interval when retrieving Job status (in ms)] (ジョブステータスを取得する時のポーリング間隔(ミリ秒)) | Talend StudioがジョブのステータスをSparkに要求する時間間隔(ミリ秒)を引用符なしで入力します。<br><br>デフォルト値は、30秒に相当する3000です。 |
   | [Maximum number of consecutive statuses missing] (見つからないステータスの最大連続回数) | ステータスの応答がない場合にTalend Studioがステータス取得のために再試行する最大回数を入力します。<br><br>デフォルト値は10です。 |
2. Azure Synapseの基本的なストレージ情報を入力します。
   | パラメーター | 使用方法 |
   | --- | --- |
   | [Authentication method] (認証方式) | 使用する認証モードをドロップダウンリストから選択します。<br><br><ul> <li> <span>[Secret Key] (シークレットキー)</span> </li> <li> <span>Azure Active Directory</span> </li> </ul> |
   | [Storage] (ストレージ) | ドロップダウンリストで使用するストレージを選択します。<br><br>ADLS Gen2は、Azure Synapse Analyticsワークスペースのデフォルトストレージです。Azure Active Directory認証を使用する際に、アプリケーションにStorage Blob Data Contributionというロールが付与され、ADLS Gen2にリンクされていることを確認します。 |
   | [Hostname] (ホスト名) | Azure Synapseアカウントから[Primary ADLS Gen2 account] (Primary ADLS Gen2アカウント)を入力します。これはAzure SynapseワークスペースのOverviewセクションにあります。 |
   | [Container] (コンテナー) | Azure Synapseアカウントから[Primary ADLS Gen2 file storage] (Primary ADLS Gen2ファイルストレージ)を入力します。これはAzure SynapseワークスペースのOverviewセクションにあります。 |
   | [Username] (ユーザー名) | Azure Synapseワークスペースにリンクしているストレージアカウント名を入力します。<br><br>これらのプロパティは、[Authentication method] (認証方法)ドロップダウンリストから[Secret Key] (シークレットキー)を選択した場合のみ利用できます。 |
   | [Password] (パスワード) | Azure Synapseワークスペースにリンクしているアクセスキーを入力します。<br><br>アクセスキーの取得方法に関する詳細は、Microsoftの公式ドキュメンテーションで[View account access keys](https://docs.microsoft.com/en-US/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#view-account-access-keys) (英語のみ)をご覧ください。<br><br>これらのプロパティは、[Authentication method] (認証方法)ドロップダウンリストから[Secret Key] (シークレットキー)を選択した場合のみ利用できます。 |
   | [Directory ID] (ディレクトリーID) | Azure Active DirectoryアプリケーションにリンクされているディレクトリーIDを入力します。IDは、お使いのAzureポータルのAzure Active Directory &gt; [Overview] (概要)タブから取得できます。<br><br>これらのプロパティは、[Authentication method] (認証方法)ドロップダウンリストからAzure Active Directoryを選択した場合のみ利用できます。 |
   | [Application ID] (アプリケーションID) | Azure Active DirectoryアプリケーションにリンクされているアプリケーションIDを入力します。IDは、お使いのAzureポータルのAzure Active Directory &gt; [Overview] (概要)タブから取得できます。<br><br>これらのプロパティは、[Authentication method] (認証方法)ドロップダウンリストからAzure Active Directoryを選択した場合のみ利用できます。 |
   | [Use certificate to authenticate] (認証に証明書を使用) | 証明書を使い、Azure Active Directoryアプリケーションに対して認証を行う場合は、このチェック ボックスをオンにし、証明書が保存されている場所を[Path to certificate] ([証明書へのパス)フィールドに入力します。<br><br>Make sure you upload the certificate in the Certificates & secrets &gt; Certificates section of your Azure Active Directory application. 証明書の詳細は、 [Microsoftの公式ドキュメンテーション](https://docs.microsoft.com/en-US/cli/azure/ad/sp?view=azure-cli-latest) (英語のみ)をご覧ください。<br><br>これらのプロパティは、[Authentication method] (認証方法)ドロップダウンリストからAzure Active Directoryを選択した場合のみ利用できます。 |
   | [Client key] (クライアントキー) | Azure Active Directoryアプリケーションにリンクされているクライアントキーを入力します。クライアントキーは、お使いのAzureポータルの[Certificates & secrets] (証明書とシークレット)タブから生成できます。<br><br>これらのプロパティは、[Authentication method] (認証方法)ドロップダウンリストからAzure Active Directoryを選択し、[Use certificate to authenticate] (認証に証明書を使用)チェック ボックスをオフにした場合のみ利用できます。 |
   | [Deployment Blob] (デプロイメントBlob) | お使いのストレージで、現在のジョブとその依存ライブラリーを保存する場所を入力します。 |
3. 設定の基本情報を入力します:
   | パラメーター | 使用方法 |
   | --- | --- |
   | [Use local timezone] (ローカルタイムゾーンを使用) | このチェックボックスをオンにすると、Sparkはシステムで指定されているローカルタイムゾーンを使用します。<br><br>情報メモ注:<br><br><ul> <li>このチェックボックスをオフにすると、SparkはUTCタイムゾーンを使用します。</li> <li>コンポーネントによっては<span>[Use local timezone for date] (日付にローカルタイムゾーンを使用)</span>チェックボックスもあります。コンポーネントのチェックボックスをオフにすると、Spark設定からのタイムゾーンが継承されます。</li> </ul> |
   | [Use dataset API in migrated components] (移行したコンポーネントでデータセットAPIを使用) | このチェックボックスをオンにし、コンポーネントにResilient Distribued Dataset (RDD) APIの代わりにDataset (DS) APIを使用させます:<br><br><ul> <li>チェックボックスをオンにした場合、Spark Batchジョブ内のコンポーネントは、DSで実行され、パフォーマンスが改善されます。</li> <li>チェックボックスをオフにした場合、Spark Batchジョブ内のコンポーネントは、RDDで実行され、変更されません。これにより、下位互換性が保証されます。</li> </ul><br><br>このチェックボックスはデフォルトで選択されていますが、7.3以降のジョブをインポートした場合、これらのジョブはRDDで実行されるため、チェックボックスはクリアされます。<br><br>情報メモ重要: Spark BatchジョブがtDeltaLakeInputコンポーネントおよびtDeltaLakeOutputコンポーネントを含んでいる場合、このチェックボックスをオンにする必要があります。 |
   | [Use timestamp for dataset components] (データセットコンポーネントにタイムスタンプを使用) | このチェックボックスをオンにすると、日付でjava.sql.Timestamp使われます。<br><br>情報メモ注: このチェックボックスをオフのままにしておくと、パターンに応じてjava.sql.Timestampかjava.sql.Dateが使われます。 |
   | [Parallelize output files writing] (出力ファイルの書き込みを並列化) | このチェックボックスをオンにすると、Sparkバッチジョブが出力ファイルの書き込み時に複数のスレッドを並行して実行できるようになります。このオプションによって実行時間のパフォーマンスが改善されます。<br><br>このチェックボックスがオフのままになっていると、出力ファイルは1つのスレッド内で順次書き込まれます。<br><br>サブジョブレベルでは、各サブジョブが順次処理されます。サブジョブ内の出力ファイルのみが並列化されます。<br><br>このオプションは、次の出力コンポーネントが含まれているSparkバッチジョブでのみ使用できます:<br><br><ul> <li>tAvroOutput</li> <li>tFileOutputDelimited (<span>[Use dataset API in migrated components] (移行したコンポーネントでデータセットAPIを使用)</span>チェックボックスが選択されている場合のみ)</li> <li>tFileOutputParquet</li> </ul><br><br>情報メモ重要: ジョブ実行中のメモリに関する問題を避けるため、このパラメーターを使用する前に、書き込まれるファイルのサイズと実行環境の容量を考慮する必要があります。 |
   | [Batch size (ms)] (バッチサイズ(ミリ秒)) | Spark Streamingジョブがソースデータをレビューして変更を特定し、新しいマイクロバッチを処理するまでの時間間隔を入力します。 |
   | [Define a streaming timeout (ms)] (ストリーミングタイムアウトを設定(ミリ秒)) | このチェックボックスをオンにし、表示されたフィールドにSpark Streamingジョブが自動的に実行を停止するまでの期間を入力します。<br><br>情報メモ注: Windows 10をお使いの場合は、Javaアプリケーションから終了シグナルを送信する際にWindows Service Wrapperに問題が発生しないよう、合理的なタイムアウトを設定することをお勧めします。このような問題が発生した場合、Azure Synapseワークスペースからジョブを手動でもキャンセルできます。 |
4. [Set tuning properties] (チューニングプロパティを設定)チェックボックスをオンにし、[Apache Spark Batchジョブ用にSparkを調整](https://help.qlik.com/talend/r/ja-JP/8.0/spark-batch/tuning-spark-for-apache-spark-batch-jobs-spark-batch-component)の説明に従ってチューニングパラメーターを定義します。

   情報メモ重要: チューニングパラメーターを設定しない場合、エラー(400 - Bad request)が発生する可能性があります。
5. [Spark "scratch" directory] (Spark "scratch"ディレクトリー)フィールドに、Talend Studioが一時ファイル(転送するjarファイルなど)をローカルシステムに保存するディレクトリーを入力します。Windowsでジョブを起動する場合、デフォルトのディスクは*C:*です。このフィールドを*/tmp*のままにすると、このディレクトリーは*C:/tmp*になります。
6. [Wait for the Job to complete] (ジョブの終了を待機)チェックボックスをオンにしてTalend Studio、またはTalend JobServerを使用している場合はジョブJVMで、ジョブの実行完了までジョブの監視を続けます。このチェックボックスをオンにすると、spark.yarn.submit.waitAppCompletionプロパティをtrueに設定したことになります。通常はSpark Batchジョブの実行時にこのチェックボックスをオンにすると便利ですが、Spark Streamingジョブを実行する場合はチェックボックスをオフにしたほうが賢明です。
7. [Use Atlas] (Atlasを使用)チェックボックスをオンにすると、Atlasを利用して特定のデータフローの来歴をトレースし、そのジョブで使われているコンポーネントとコンポーネント間のスキーマの変更を含め、そのデータがSparkジョブによってどう生成されたかを確認できます。

   このオプションはSpark Universal 3.3.xでのみ使用可能です。

   このオプションを有効にしたら、以下のパラメーターを設定する必要があります。
   * Atlas URL: Atlasの接続先を入力します。*http://name\_of\_your\_atlas\_node:port*となる場合がほとんどです。

   * [Username] (ユーザー名)および[Password] (パスワード)フィールドに、Atlasにアクセスするための認証情報を入力します。

   * Atlas設定フォルダーの設定: AtlasクラスターにSSLや読み取りタイムアウトなどのカスタムプロパティが含まれている場合は、このチェックボックスをオンにし、表示されるフィールドにローカルマシンのディレクトリーを入力し、このディレクトリーにAtlasの*atlas-application.properties*ファイルを入れます。こうすることでジョブが有効になり、これらのカスタムプロパティを利用できるようになります。

     この設定ファイルは、クラスターの管理者に尋ねる必要があります。このファイルの詳細は、[\[Atlas configuration\] (Atlas設定)](https://atlas.apache.org/0.8.2/Configuration.html) (英語のみ)のクライアント設定セクションをご覧ください。

   * [Die on error] (エラー発生時に強制終了): Atlasへの接続の問題など、Atlas関連の問題が発生した場合にジョブの実行を停止する場合は、このチェックボックスをオンにします。それ以外の場合は、解除してジョブが実行を継続できるようにしてください。

## タスクの結果

ジョブの実行時に生成されたLivy IDを使って、Azure Synapseワークスペースでジョブの結果を取得できます。