JindoTable SDK模式提供archiveTable和unarchiveTable命令,可以在不依赖Jindo Namespace Service的情况下进行归档和解冻等操作。本文为您介绍archiveTable和unarchiveTable命令的使用方法。

前提条件

  • 已创建集群,详情请参见创建集群
  • 待归档的数据必须是表数据(可以是分区表或非分区表),且已经位于阿里云对象存储OSS。

背景信息

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
    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则表示低频存储,会跳过已经处于归档或冷归档存储的文件。如果指定-a则表示归档存储,会跳过冷归档的文件。

    -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
    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 转换存储类型,均适用于冷归档。
  • 如果不指定-i/-a/-o/-cr参数,则转换存储格式为标准(Standard)存储。
    说明 只有当冷归档文档处于完全解冻状态时,才可以转换到标准(Standard)、低频 (Infrequent Access,IA)或归档(Archive)存储类型。
  • 如果指定-i/-a/-o/-cr参数,相关参数描述如下:
    • 指定-i参数,则转换存储格式为低频(Infrequent Access,IA)存储,跳过原本为标准存储的文件。对冷归档 (Cold Archive) 有效。
    • 指定-a参数,则转换存储格式为归档,唯一作用是将冷归档 (Cold Archive) 文件改为归档,跳过原本为标准或低频存储的文件。
    • 指定-o参数,则仅做解冻(Restore)操作。跳过原本为标准存储或低频存储的文件。已经处于解冻状态的文件也会被跳过,即不会重复解冻。
    • 指定-cr参数,则用来检查分区下文件的解冻任务是否完成。
-notWait 只对解冻(Restore)操作有效,如果指定该参数,则只发送解冻命令,而不等待解冻任务完成。通常用于冷归档 (Cold Archive) 文件的解冻。