JindoTable SDK模式提供archiveTable和unarchiveTable命令,可以在不依赖Jindo Namespace Service的情况下进行归档和解冻等操作。本文为您介绍archiveTable和unarchiveTable命令的使用方法。
前提条件
- 本地安装了Java JDK 8。
- 已创建集群,详情请参见创建集群。
- 待归档的数据必须是表数据(可以是分区表或非分区表),且已经位于阿里云对象存储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 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 。
|
否 |
-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
返回如下信息。
<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)操作。原本为标准存储或低频存储的文件均被跳过。已经处于解冻状态的文件也会被跳过,即不会重复解冻。