

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

# 讀取還原的物件
<a name="emr-hadoop-read-restore-objects"></a>

 使用 Amazon EMR 7.2.0 版和更新版本，您可以使用`S3A`通訊協定從資料表的 S3 位置讀取還原的 Glacier 物件。先前版本的引擎無法區分 Glacier 和 Glacier Deep Archive 檔案，這表示`AmazonS3Exception`如果您嘗試使用 存取進行中的 Glacier 檔案，就會收到 `S3A`。如果封存的 Glacier 檔案仍在還原中，則此讀取操作會忽略這些檔案。若要啟用此行為，請使用 設定`fs.s3a.glacier.read.restored.objects`。此設定可以是三個值：
+ **READ\$1ALL** – 此值表示 Amazon EMR 不應考慮從 Amazon S3 擷取的儲存類別。這是預設行為。
+ **SKIP\$1ALL\$1GLACIER** – 此值表示 Amazon EMR 應忽略任何以 Glacier 儲存類別標記的 S3 物件，並擷取所有其他物件。這是 Amazon EMR 與 Glacier 物件相關的預設行為。
+ **READ\$1RESTORED\$1GLACIER\$1OBJECTS** – 此值表示 Amazon EMR 應檢查 Glacier 物件的還原狀態。如果 Amazon EMR 可以還原物件，您可以像一般 S3 物件一樣讀取它們。否則，Amazon EMR 會忽略來自 Amazon Glacier 的物件

## 範例
<a name="emr-hadoop-read-restore-objects-examples"></a>

**Spark**

若要在使用 Spark 時讀取還原的物件，請使用下列組態：

```
--conf spark.hadoop.fs.s3a.glacier.read.restored.objects=<value>
```

如果您使用 spark-sql，請改用下列組態；

```
spark-sql --conf spark.hadoop.fs.s3a.glacier.read.restored.objects=<value>
```

**Flink**

如果您使用 Flink，您可以在 `flink-conf.yaml` 檔案中設定組態

```
fs.s3a.glacier.read.restored.objects: <value>
```

您也可以設定`flink-conf`分類：

```
[
	{
		"Classification": "flink-conf",
		"Properties": {
		"fs.s3a.glacier.read.restored.objects":"<value>"
		}
	}
]
```

**Hive**

如果您使用 Hive，請在 `hive-site.xml` 檔案中設定組態。

```
<property>
	<name>fs.s3a.glacier.read.restored.objects</name>
	<value><value></value>
</property>
```

您也可以使用 Hive CLI 來設定 屬性`--hiveconf`：

```
hive --hiveconf fs.s3a.glacier.read.restored.objects=<value>
```

## 考量事項
<a name="emr-hadoop-read-restore-objects-considerations"></a>

當您從 Amazon Glacier 讀取還原的物件時，請注意下列考量：
+ 如果您使用 `S3A`配置或 `S3AFileSystem`來存取資料，則只能讀取還原的物件。
+ 當您讀取還原的 Glacier 物件時，Amazon EMR 不會還原物件本身。若要這樣做，您必須使用 AWS CLI 或 AWS SDK。