# Apache Spark StreamingのtJavaプロパティ

これらのプロパティは、Spark Streamingジョブのフレームワークで実行されているtJavaを設定するために使われます。

Spark StreamingのtJavaコンポーネントは、カスタムコードファミリーに属しています。

このコンポーネントはTalend Real-Time Big Data PlatformとTalend Data Fabricで利用できます。

## 基本設定

| プロパティ | 説明 |
| --- | --- |
| [Schema] (スキーマ)と[Edit Schema] (スキーマを編集) | <ul> <li> <p>スキーマとは行の説明のことです。処理して次のコンポーネントに渡すフィールド(カラム)数を定義します。Sparkジョブを作成する場合、フィールドの命名時は予約語の<kbd>line</kbd>を避けます。</p> <p>スキーマを変更するには<span>[Edit schema] (スキーマを編集)</span>をクリックします。現在のスキーマが<span>リポジトリー</span>タイプの場合は、3つのオプションを利用できます。</p> <ul> <li> <p> <span>[View schema] (スキーマを表示)</span>: スキーマのみを表示する場合は、このオプションを選択します。</p> </li> <li> <p> <span>[Change to built-in property] (組み込みのプロパティに変更)</span>: ローカルで変更を行うためにスキーマを<span>組み込み</span>に変更する場合は、このオプションを選択します。</p> </li> <li> <p> <span>[Update repository connection] (リポジトリー接続をアップデート)</span>: リポジトリーに保存されているスキーマに変更を加え、変更後にそのコンテンツをすべてのジョブにプロパゲートするかどうかを決める場合は、このオプションを選択します。</p> <p>変更を現在のジョブにのみ反映する場合は、変更後、<span>[No] (いいえ)</span>を選択し、<span>[Repository Content] (リポジトリーコンテンツ)</span>ウィンドウで再びこのスキーマのメタデータを選択します。</p> </li> </ul> <p>null不可能なプリミティブフィールドの入力値がnullの場合、そのフィールドを含むデータ行は拒否されることにご注意ください。</p> </li> <li> <p> <span>[Built-in] (組み込み)</span>: そのコンポーネントに対してのみスキーマを作成し、ローカルに保管します。</p> </li> <li> <p> <span>[Repository] (リポジトリー)</span>: スキーマは作成済みで、リポジトリーに保管されています。さまざまなプロジェクトやジョブデザインで再利用できます。</p> </li> </ul> |
| [Code] (コード) | 入力リンクからのRDDを処理するため、または新しいRDDをこの入力リンクから作成するためのJavaコードを入力します。<br><br>スキーマ、リンクとコンポーネント名を利用してカスタムコードを作成する必要があります。たとえば、このコンポーネントのラベルが*tJava\_1*で、tJava\_1への接続のラベルが*row1*である場合、入力RDDのクラスは*row1Struct*で。入力RDD自体は*rdd\_tJava\_1*変数と共に利用できます。<br><br>詳細な手順は、このコンポーネントの[Code] (コード)フィールドに記載のデフォルトのコメントをご覧ください。<br><br>Spark Java APIの詳細は、ApacheのSparkのドキュメント(https://spark.apache.org/docs/latest/api/java/index.html)をご覧ください。 |

## 詳細設定

| プロパティ | 説明 |
| --- | --- |
| Classes (クラス) | [Basic settings] (基本設定)ビューの[Code] (コード)フィールドに書き込まれたコード内で使用する必要のあるクラスを定義します。<br><br>シリアライズで最終的な例外の発生を避けるために、[Code] (コード)フィールド内ではなく、このフィールド内で新しいクラスを定義することをお勧めします。 |
| [Import] (インポート) | インポートするJavaコード、および必要に応じて[Basic settings] (基本設定)ビューの[Code] (コード)フィールドで使用されている外部ライブラリーを入力します。 |

## 使用方法

| 使用方法のガイダンス | 説明 |
| --- | --- |
| **使用ルール** | このコンポーネントは、終了コンポーネントとして使用され、入力リンクを必要とします。 |
| コードサンプル | [Basic settings] (基本設定)ビューの[Code] (コード)フィールドに次のコードを入力し、入力RDDにカスタム変換を使用して、出力RDDを作成します。mapInToOutは、[Advanced settings] (詳細設定)ビューの[Classes] (クラス)フィールドで定義するクラスです。<br><br>```<br>outputrdd_tJava_1 = rdd_tJava_1.map(new mapInToOut(job));<br>```<br><br>[Advanced settings] (詳細設定)ビューの[Classes] (クラス)フィールドに次のコードを入力して、mapInToOutクラスを定義します。<br><br>```<br>public static class mapInToOut implements<br>org.apache.spark.api.java.function.Function<inputStruct,RecordOut_tJava_1>{<br><br>private ContextProperties context = null;<br>private java.util.List<org.apache.avro.Schema.Field> fieldsList;<br>		<br>public mapInToOut(JobConf job) {<br>	   this.context = new ContextProperties(job);<br>}<br>		<br>@Override<br>public RecordOut_tJava_1 call(inputStruct origStruct) {		<br>			<br>	 if (fieldsList == null) {<br>	     this.fieldsList = (new inputStruct()).getSchema()<br>			.getFields();<br>	 }<br><br>	 RecordOut_tJava_1 value = new RecordOut_tJava_1();<br><br>	 for (org.apache.avro.Schema.Field field : fieldsList) {<br>	      value.put(field.pos(), origStruct.get(field.pos()));<br>	 }<br><br>	 return value;		<br>			<br>}<br>}<br>``` |
| [Spark Connection] (Spark接続) | [Run] (実行)ビューの[Spark configuration] (Spark設定)タブで、ジョブ全体でのSparkクラスターへの接続を定義します。また、ジョブでは、依存jarファイルを実行することを想定しているため、Sparkがこれらのjarファイルにアクセスできるように、これらのファイルの転送先にするファイルシステム内のディレクトリーを指定する必要があります。<br><br><ul> <li> <div> <span>Yarnモード</span>(YarnクライアントまたはYarnクラスター):<ul> <li> <p>Google Dataprocを使用している場合、<span>[Spark configuration] (Spark設定)</span>タブの<span>[Google Storage staging bucket] (Google Storageステージングバケット)</span>フィールドにバケットを指定します。</p> </li> <li> <p>HDInsightを使用している場合、<span>[Spark configuration] (Spark設定)</span>タブの<span>[Windows Azure Storage configuration] (Windows Azure Storage設定)</span>エリアでジョブのデプロイメントに使用するブロブを指定します。</p> </li> <li>Altusを使用する場合は、<span>[Spark configuration] (Spark設定)</span>タブでジョブのデプロイにS3バケットまたはAzure Data Lake Storageを指定します。</li> <li> <p>オンプレミスのディストリビューションを使用する場合は、クラスターで使われているファイルシステムに対応する設定コンポーネントを使用します。一般的に、このシステムはHDFSになるため、<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/hdfs/thdfsconfiguration">tHDFSConfiguration</a>を使用します。</p> </li> </ul> </div> </li> <li> <p> <span>[Standalone mode] (スタンドアロンモード)</span>: クラスターで使われているファイルシステム(<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/hdfs/thdfsconfiguration-properties-for-apache-spark-batch">tHDFSConfiguration Apache Spark Batch</a>や<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/amazon-s3/ts3configuration-properties-for-apache-spark-batch">tS3Configuration Apache Spark Batch</a>など)に対応する設定コンポーネントを使用します。</p> <p>ジョブ内に設定コンポーネントがない状態でDatabricksを使用している場合、ビジネスデータはDBFS (Databricks Filesystem)に直接書き込まれます。</p> </li> </ul><br><br>この接続は、ジョブごとに有効になります。 |