全部產品
Search
文件中心

E-MapReduce:JindoTable SDK模式歸檔和解凍命令介紹

更新時間:Jul 01, 2024

JindoTable SDK模式提供archiveTable和unarchiveTable命令,可以在不依賴Jindo Namespace Service的情況下進行歸檔和解凍等操作。本文為您介紹archiveTable和unarchiveTable命令的使用方法。

前提條件

  • 本地安裝了Java JDK 8。
  • 已建立叢集,詳情請參見建立叢集
  • 待歸檔的資料必須是表資料(可以是分區表或非分區表),且已經位於阿里雲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上的表或分區進行歸檔。

  1. 通過SSH方式登入叢集,詳情請參見登入叢集
  2. 執行以下命令,擷取協助資訊。
    jindo table -help archiveTable
    返回如下資訊。
      <dbName.tableName>      The table to archive.
      -a/-i                   storage policy, -a for Archive and -i for IA
                              (Infrequent Access).
      <condition>/-fullTable  A filter condition to determine which partitions should
                              be archived, supporting common operators (like '>'),
                              while -fullTable means that all partitions (or a whole
                              un-partitioned table) should be archived. One but only
                              one option must be specified among -c "<condition>" and
                              -fullTable.
      <before days>           Optional, saying that table/partitions should be
                              archived only when they are created (not updated or
                              modified) more than some days before from now.
      <parallelism>           The maximum concurrency when archiving partitions, 1 by
                              default.
      -mr/-mapReduce          Archive table/partitions using cluster-level MapReduce
                              job instead of local-level multi-thread.
      -e/-explain             If present, the command would not really archive data,
                              but only prints the table/partitions that would be
                              archived for given conditions.
            <working directory>: A directory to locate map-reduce temp files. Must not be a
      local file system directory. 'hdfs:///tmp/<current user>/jindotable-policy/' by
      default.
    
      <log directory>  A directory to locate log files, '/tmp/<current user>/' by
                       default.
                                
    archiveTable命令語句格式如下所示。
    -archiveTable -t <dbName.tableName> \
    -a/-i \
    [-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>待歸檔的表名稱,格式為資料庫名.表名

    資料庫和表名之間以半形句號(.)分隔。表可以是分區表或非分區表。

    -a/-i目標儲存方式。支援如下方式:
    • -a:歸檔(Archive)儲存。
    • -i:低頻 (Infrequent Access,IA)儲存。

    如果使用-i即表示低頻儲存,會跳過已經處于歸檔儲存的檔案。

    -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上的表或分區進行解凍。

  1. 通過SSH方式登入叢集,詳情請參見登入叢集
  2. 執行以下命令,擷取協助資訊。
    jindo table -help unarchiveTable
    返回如下資訊。
      <dbName.tableName>      The table to unarchive.
      -i                      unarchive to IA (Infrequent Access).
      -o                      restore to make archived data accessible temporarily.
      <condition>/-fullTable  A filter condition to determine which partitions should
                              be unarchived, supporting common operators (like '>'),
                              while -fullTable means that all partitions (or a whole
                              un-partitioned table) should be unarchived. One but
                              only one option must be specified among -c
                              "<condition>" and -fullTable.
      <before days>           Optional, saying that table/partitions should be
                              unarchived only when they are created (not updated or
                              modified) more than some days before from now.
      <parallelism>           The maximum concurrency when unarchiving partitions, 1
                              by default.
      -mr/-mapReduce          Unarchive table/partitions using cluster-level
                              MapReduce job instead of local-level multi-thread.
      -e/-explain             If present, the command would not really unarchive
                              data, but only prints the table/partitions that would
                              be unarchived for given conditions.
            <working directory>: A directory to locate map-reduce temp files. Must not be a
      local file system directory. 'hdfs:///tmp/<current user>/jindotable-policy/' by
      default.
    
      <log directory>  A directory to locate log files, '/tmp/<current user>/' by
                       default.
    unarchiveTable命令語句格式如下所示。
    -unarchiveTable -t <dbName.tableName> \
    [-i/-o] \
    [-c "<condition>" | -fullTable] \
    [-b/-before <before days>] \
    [-p/-parallel <parallelism>] \
    [-mr/-mapReduce] \
    [-e/-explain] \
    [-w/-workingDir <working directory>] \
    [-l/-logDir <log directory>]

unarchiveTable命令與archiveTable命令參數只有一處區別,即沒有必選參數-a/-i,而被選擇性參數-i/-o替代。

選擇性參數-i/-o描述如下:
  • 如果不指定-i/-o參數,則轉換儲存格式為標準(Standard)儲存。
  • 如果指定-i參數,則轉換儲存格式為低頻(Infrequent Access,IA)儲存,原本為標準儲存的檔案被跳過。
  • 如果指定-o參數,則僅做解凍(Restore)操作。原本為標準儲存或低頻儲存的檔案均被跳過。已經處於解凍狀態的檔案也會被跳過,即不會重複解凍。