

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon EMR 成品儲存庫檢查相依性
<a name="emr-artifact-repository"></a>

自 Amazon EMR 發行版本 5.18.0 開始，您可以使用 Amazon EMR 成品儲存庫建置 Apache Hive 與 Apache Hadoop 作業程式碼，並將其用於確切的程式庫和依存項目版本，以搭配特定 Amazon EMR 發行版本使用。對儲存庫中的 Amazon EMR 成品進行建置，即可確保建置作業的程式庫版本與叢集在執行期提供的程式庫版本完全相同，這有助於避免執行期的類別路徑問題。目前，唯有在執行 Maven 建置時能夠使用 Amazon EMR 成品。

若要存取成品儲存庫，請將儲存庫 URL 新增至 Maven 設定檔案，或是特定專案的 `pom.xml` 組態檔案。然後，您可以在專案組態中指定相依性。對於相依性版本，請使用 [Amazon EMR 5.x 發行版本](emr-release-5x.md) 上所需發行版本的*元件版本*下列出的版本。例如，最新 Amazon EMR 發行版本的元件版本可在 [5.36.2 元件版本](emr-5362-release.md#emr-5362-components) 取得。如果*元件版本*下方並未列出專案的成品，則您可以指定該發行版本所列的 Hive 和 Hadoop 版本。例如，Amazon EMR 發行版本 5.18.0 適用的 Hadoop 元件版本為 `2.8.4-amzn-1`。

成品儲存庫 URL 的語法如下：

```
https://{{s3-endpoint}}/{{region-ID}}-emr-artifacts/{{emr-release-label}}/repos/maven/
```
+ {{s3-endpoint}} 是儲存庫區域的 Amazon Simple Storage Service (Amazon S3) 端點，{{region-ID}} 則是對應的區域。例如，`s3.us-west-1.amazonaws.com` 和 `us-west-1`。如需詳細資訊，請參閱 *Amazon Web Services 一般參考* 中的 Amazon S3 端點。各區域間的成品並無差異，因此您可以為部署環境指定最方便的區域。
+ {{emr-release-label}} 即為 Amazon EMR 叢集的版本標籤，系統會在該叢集上執行程式碼。發行標籤的格式應為 `emr-{{x.x.x}}`，例如 `emr-5.36.2`。EMR 系列發行版本可能包含多個發行版本。例如，如果您使用的是 EMR 發行版本 5.24.1，請在成品儲存庫 URL 中使用 5.24 系列內的第一個 EMR 版本標籤 `emr-5.24.0`：

  ```
  https://{{s3-endpoint}}/{{region-ID}}-emr-artifacts/emr-5.24.0/repos/maven/
  ```

**Example Maven pom.xml 的組態**  

下方的 pom.xml 範例會使用 us-west-1 中的成品儲存庫設定 Maven 專案，藉此針對 emr-5.18.0 Apache Hadoop 和 Apache Hive 成品進行組建。由於成品儲存庫未提供快照版本，pom.xml 會停用快照功能。下方範例中的省略符號 ({{...}}) 代表省略的其他組態參數，請勿將該符號複製到 Maven 專案中。

```
<project>
	{{...}}
	<repositories>
		{{...}}
		<repository>
			<id>emr-5.18.0-artifacts</id>
			<name>EMR 5.18.0 Releases Repository</name>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
			<url>https://s3.us-west-1.amazonaws.com/us-west-1-emr-artifacts/emr-5.18.0/repos/maven/</url>
		</repository>
		{{...}}
	</repositories>
	{{...}}
	<dependencies>
		{{...}}
		<dependency>
			<groupId>org.apache.hive</groupId>
			<artifactId>hive-exec</artifactId>
			<version>2.3.3-amzn-2</version>
		</dependency>
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-common</artifactId>
			<version>2.8.4-amzn-1</version>
		</dependency>
		{{...}}
	</dependencies>
	
</project>
```