本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
讀取還原的物件
使用 Amazon EMR 7.2.0 版和更新版本,您可以從具有S3A
通訊協定的資料表 S3 位置讀取還原的 Glacier 物件。先前版本的引擎無法區分 Glacier 和 Glacier Deep Archive 檔案,這表示AmazonS3Exception
如果您嘗試使用 存取進行中 Glacier 檔案,就會收到 S3A
。如果封存的 Glacier 檔案仍在還原中,則此讀取操作會忽略這些檔案。若要啟用此行為,請使用 設定fs.s3a.glacier.read.restored.objects
。此設定可以是三個值:
-
READ_ALL – 此值表示 Amazon EMR 不應考慮從 Amazon S3 擷取的儲存類別。這是預設行為。
-
SKIP_ALL_GLACIER – 此值表示 Amazon EMR 應該忽略任何以 Glacier 儲存類別標記的 S3 物件,並擷取所有其他物件。這是 Amazon Athena 與 Glacier 物件相關的預設行為。
-
READ_RESTORED_GLACIER_OBJECTS – 此值表示 Amazon EMR 應檢查 Glacier 物件的還原狀態。如果 Amazon EMR 可以還原物件,您可以像一般 S3 物件一樣讀取它們。否則,Amazon EMR 會忽略 S3 Glacier 中的物件
範例
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>
考量事項
當您從 S3 Glacier 讀取還原的物件時,請注意下列考量事項:
-
如果您使用
S3A
配置或S3AFileSystem
來存取資料,則只能讀取還原的物件。 -
當您讀取還原的 Glacier 物件時,Amazon EMR 不會還原物件本身。若要這麼做,您必須使用 AWS CLI 或 AWS SDK。