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上的表或分区进行归档。
- 通过SSH方式登录集群,详情请参见登录集群。
- 执行以下命令,获取帮助信息。
jindo table -help archiveTablearchiveTable命令语句格式如下所示。-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上的表或分区进行解冻。
- 通过SSH方式登录集群,详情请参见登录集群。
- 执行以下命令,获取帮助信息。
jindo table -help unarchiveTableunarchiveTable命令语句格式如下所示。-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) 文件的解冻。 | 否 |