JindoTable SDK模式提供archiveTable和unarchiveTable命令,可以在不依賴Jindo Namespace Service的情況下進行歸檔和解凍等操作。本文為您介紹archiveTable和unarchiveTable命令的使用方法。
前提條件
- 已建立叢集,詳情請參見建立叢集。
- 待歸檔的資料必須是表資料(可以是分區表或非分區表),且已經位於阿里雲Object Storage Service。
背景資訊
JindoTable原有archive和unarchive命令可以對OSS上的表或分區進行歸檔或解凍等操作,但archive和unarchive命令依賴SmartData組件Jindo Namespace Service。現在新增的archiveTable和unarchiveTable命令,可以在不依賴Jindo Namespace Service的情況下進行歸檔和解凍等操作。
新增的archiveTable和unarchiveTable命令與原有archive和unarchive命令的主要區別為:
- 可以在未部署SmartData服務的叢集上執行。例如,非EMR的使用者自建叢集。
- 可以通過傳入過濾參數,一次應用於大量分區,多線程執行。如果本地多線程仍不能滿足需求,還可以啟動MapReduce任務在整個叢集上執行。
原有archive和unarchive命令的詳細資料,請參見JindoTable使用說明。
使用限制
EMR-3.36.0及後續版本或EMR-5.2.0及後續版本的叢集,支援新增的archiveTable和unarchiveTable命令。
archiveTable命令
archiveTable命令可以對OSS上的表或分區進行歸檔。
- 通過SSH方式登入叢集,詳情請參見登入叢集。
- 執行以下命令,擷取協助資訊。
jindo table -help archiveTable
archiveTable命令語句格式如下所示。-archiveTable -t <dbName.tableName> \ -i/-a/-ca \ [-c "<condition>" | -fullTable] \ [-b/-before <before days>] \ [-p/-parallel <parallelism>] \ [-mr/-mapReduce] \ [-e/-explain] \ [-w/-workingDir <working directory>] \ [-l/-logDir <log directory>]
參數 描述 是否必選參數 -t <dbName.tableName> 待歸檔的表名稱,格式為 資料庫名.表名
。資料庫和表名之間以半形句號(.)分隔。表可以是分區表或非分區表。
是 -i/-a/-ca 目標儲存方式。支援如下方式: - -i:低頻 (Infrequent Access,IA)儲存。
- -a:歸檔(Archive)儲存。
- -ca:冷歸檔(Cold Archive)儲存。
如果指定-i則表示低頻儲存,會跳過已經處于歸檔或冷Archive Storage的檔案。如果指定-a則表示Archive Storage,會跳過冷歸檔的檔案。
是 -c "<condition>" | -fullTable -fullTable
和-c "<condition>"
只需提供一個,即要麼指定-c "<condition>"
,要麼指定-fullTable
。- 指定
-fullTable
時,則為歸檔整表,既可以是非分區表也可以是分區表。 - 指定
-c "<condition>"
時,則提供了一個過濾條件,用來選擇希望歸檔的分區,支援常見運算子,例如大於符號(>)。例如,資料類型為String的分區ds,希望分區名大於 'd',則代碼為
-c " ds > 'd' "
。
是 -b/before <before days> 只有建立時間距離現在超過一定天數的表或分區才會被歸檔。 否 -p/-parallel <parallelism> 歸檔操作的並行度。 否 -mr/-mapReduce 使用Hadoop MapReduce而非本地多線程來歸檔資料。 否 -e/-explain 如果出現該選項,則為解釋(explain)模式,只會顯示待移動的分區列表,而不會真正移動資料。 否 -w/-workingDir 只在MapReduce作業時使用,為MapReduce作業的工作目錄。必須有讀寫權限,工作目錄可以非空(作業執行過程中會建立臨時檔案,執行完畢會清理臨時檔案)。 否 -l/-logDir <log directory> 指定Log檔案的目錄。 否
unarchiveTable命令
unarchiveTable命令與archiveTable命令格式基本一致,但效果相反。unarchiveTable命令可以對OSS上的表或分區進行解凍。
- 通過SSH方式登入叢集,詳情請參見登入叢集。
- 執行以下命令,擷取協助資訊。
jindo table -help unarchiveTable
unarchiveTable命令語句格式如下所示。-archiveTable -t <dbName.tableName> \ -i/-a/-o/-cr \ [-notWait] \ [-c "<condition>" | -fullTable] \ [-b/-before <before days>] \ [-p/-parallel <parallelism>] \ [-mr/-mapReduce] \ [-e/-explain] \ [-w/-workingDir <working directory>] \ [-l/-logDir <log directory>]
unarchiveTable命令與archiveTable命令參數只有以下兩處區別:
- 沒有必選參數 -i/-a/-ca,而被選擇性參數-i/-a/-o/-cr替代。
- 多了選擇性參數-notWait。
參數 | 描述 | 是否必選參數 |
-i/-a/-o/-cr | 轉換儲存類型,均適用於冷歸檔。
| 否 |
-notWait | 只對解凍(Restore)操作有效,如果指定該參數,則只發送解凍命令,而不等待解凍任務完成。通常用於冷歸檔 (Cold Archive) 檔案的解凍。 | 否 |