MaxCompute用户指南:数据上传下载:Tunnel命令操作-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

MaxCompute用户指南:数据上传下载:Tunnel命令操作

行者武松 2017-10-23 15:26:50 4802


功能简介


您可以通过 客户端 提供的 Tunnel 命令实现原有 Dship 工具的功能。
Tunnel 命令,主要用于数据的上传和下载等功能。主要功能如下:

  • Upload:支持文件或目录(指一级目录)的上传,每一次上传只支持数据上传到一张表或表的一个分区,有分区的表一定要指定上传的分区。
    1. tunnel upload log.txt test_project.test_table/p1="b1",p2="b2";
    2. -- 将log.txt中的数据上传至项目空间test_project的表test_table中的p1="b1",p2="b2"分区
    3. tunnel upload  log.txt  test_table --scan=only;
    4. -- 将log.txt中的数据上传至表 test_table 中。--scan参数表示需要扫描log.txt中的数据是否符合 test_table 的定义,如果不符合报错,并停止上传数据。

  • Download:只支持下载到单个文件,每一次下载只支持下载一张表或一个分区到一个文件,有分区的表一定要指定下载的分区。
    1. tunnel download  test_project.test_table/p1="b1",p2="b2"  test_table.txt;
    2. -- 将表中的数据下载到 test_table.txt 文件中

  • Resume:因为网络或 tunnel 服务的原因出错,支持文件或目录的续传。可以继续上一次的数据上传操作,但 Resume 命令暂时没有对下载操作的支持。
    1. tunnel resume;

  • Show:显示历史任务信息。
    1. tunnel show history -n 5;
    2. --显示前5次上传/下载数据的详细命令
    3. tunnel show log;
    4. --显示最后一次上传/下载数据的日志

  • Purge:清理 session 目录,默认清理 3 天内的。
    1. tunnel purge 5;
    2. --清理前5天的日志


Tunnel 命令使用说明


Tunnel 命令支持在客户端通过 help 子命令获取帮助信息,每个命令和选择支持短命令格式:
  1.     odps@ project_name>tunnel help;
  2.     Usage: tunnel <subcommand> [options] [args]
  3.     Type 'tunnel help <subcommand>' for help on a specific subcommand.
  4. Available subcommands:
  5.     upload (u)
  6.     download (d)
  7.     resume (r)
  8.     show (s)
  9.     purge (p)
  10.     help (h)
  11. tunnel is a command for uploading data to / downloading data from ODPS.

参数说明:

  • upload:上传数据到 MaxCompute 的表中。

  • download:从 MaxCompute 的表中下载数据。

  • resume:如果上传数据失败,通过 resume 命令进行断点续传,目前仅支持上传数据的续传。每次上传、下载数据被称为一个 session。在 resume 命令后指定 session id 完成续传。

  • show:查看历史运行信息。

  • purge:清理 session 目录。

  • help:输出 tunnel 帮助信息。


Upload


将本地文件的数据导入 MaxCompute 的表中,以追加模式导入。子命令使用提示:
  1. odps@ project_name>tunnel help upload;
  2. usage: tunnel upload [options] <path> <[project.]table[/partition]>
  3.               upload data from local file
  4. -acp,-auto-create-partition <ARG>   auto create target partition if not
  5.                                      exists, default false
  6. -bs,-block-size <ARG>               block size in MiB, default 100
  7. -c,-charset <ARG>                   specify file charset, default ignore.
  8.                                      set ignore to download raw data
  9. -cp,-compress <ARG>                 compress, default true
  10. -dbr,-discard-bad-records <ARG>     specify discard bad records
  11.                                      action(true|false), default false
  12. -dfp,-date-format-pattern <ARG>     specify date format pattern, default
  13.                                      yyyy-MM-dd HH:mm:ss
  14. -fd,-field-delimiter <ARG>          specify field delimiter, support
  15.                                      unicode, eg \u0001. default ","
  16. -h,-header <ARG>                    if local file should have table
  17.                                      header, default false
  18. -mbr,-max-bad-records <ARG>         max bad records, default 1000
  19. -ni,-null-indicator <ARG>           specify null indicator string,
  20.                                      default ""(empty string)
  21. -rd,-record-delimiter <ARG>         specify record delimiter, support
  22.                                      unicode, eg \u0001. default "\r\n"
  23. -s,-scan <ARG>                      specify scan file
  24.                                      action(true|false|only), default true
  25. -sd,-session-dir <ARG>              set session dir, default
  26.                                      D:\software\odpscmd_public\plugins\ds
  27.                                      hip
  28. -ss,-strict-schema <ARG>            specify strict schema mode. If false,
  29.                                      extra data will be abandoned and
  30.                                      insufficient field will be filled
  31.                                      with null. Default true
  32. -te,-tunnel_endpoint <ARG>          tunnel endpoint
  33.     -threads <ARG>                   number of threads, default 1
  34. -tz,-time-zone <ARG>                time zone, default local timezone:
  35.                                      Asia/Shanghai
  36. Example:
  37.     tunnel upload log.txt test_project.test_table/p1="b1",p2="b2"

参数说明:

  • -acp:如果不存在,自动创建目标分区,默认关闭。

  • -bs:每次上传至 Tunnel 的数据块大小,默认值:100MiB (MiB=1024*1024B )。

  • -c:指定本地数据文件编码,默认为 UTF-8。不设定,默认下载源数据。

  • -cp:指定是否在本地压缩后再上传,减少网络流量,默认开启。

  • -dbr:是否忽略脏数据(多列,少列,列数据类型不匹配等情况)。
    值为 true 时,将全部不符合表定义的数据忽略。

  • 值为 false 时,若遇到脏数据,则给出错误提示信息,目标表内的原始数据不会被污染。

-dfp:DateTime 类型数据格式,默认为 yyyy-MM-dd HH:mm:ss。
-fd:本地数据文件的列分割符,默认为逗号。
-h:数据文件是否包括表头,如果为 true,则 dship 会跳过表头从第二行开始上传数据。
-mbr:默认情况下,当上传的脏数据超过 1000 条时,上传动作终止。通过此参数,可以调整可容忍的脏数据量。
-ni:NULL 数据标志符,默认为” “(空字符串)。
-rd:本地数据文件的行分割符,默认为 \r\n。
-s:是否扫描本地数据文件,默认值为 false。

  • 值为 true 时,先扫描数据,若数据格式正确,再导入数据。

  • 值为 false 时,不扫描数据,直接进行数据导入。

  • 值为 only 时,仅进行扫描本地数据,扫描结束后不继续导入数据。

-sd:设置 session 目录。
-te:指定 tunnel 的 Endpoint。
-threads:指定 threads 的数量,默认为 1。
-tz:指定时区。默认为本地时区:Asia/Shanghai。
示例如下:

  • 创建目标表,如下所示:
    1.    CREATE TABLE IF NOT EXISTS sale_detail(
    2.       shop_name     STRING,
    3.       customer_id   STRING,
    4.       total_price   DOUBLE)
    5.   PARTITIONED BY (sale_date STRING,region STRING);

  • 添加分区,如下所示:
    1. alter table sale_detail add partition (sale_date='201312', region='hangzhou');

  • 准备数据文件 data.txt,其内容如下所示:
    1.   shop9,97,100
    2.   shop10,10,200
    3.   shop11,11

    这份文件的第三行数据与 sale_detail 的表定义不符。sale_detail 定义了三列,但数据只有两列。

  • 导入数据,如下所示:
    1. odps@ project_name>tunnel u d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false
    2. Upload session: 201506101639224880870a002ec60c
    3. Start upload:d:\data.txt
    4. Total bytes:41   Split input to 1 blocks
    5. 2015-06-10 16:39:22     upload block: '1'
    6. ERROR: column mismatch -,expected 3 columns, 2 columns found, please check data or delimiter

    由于 data.txt 中有脏数据,数据导入失败。并给出 session id 及错误提示信息。

  • 数据验证,如下所示:
    1. odps@ odpstest_ay52c_ay52> select * from sale_detail where sale_date='201312';
    2. ID = 20150610084135370gyvc61z5
    3. +-----------+-------------+-------------+-----------+--------+
    4. | shop_name | customer_id | total_price | sale_date | region |
    5. +-----------+-------------+-------------+-----------+--------+
    6. +-----------+-------------+-------------+-----------+--------+

    由于有脏数据,数据导入失败,表中无数据。


Show


显示历史记录。子命令使用提示:
  1. odps@ project_name>tunnel help show;
  2. usage: tunnel show history [options]
  3.               show session information
  4. -n,-number <ARG>   lines
  5. Example:
  6.     tunnel show history -n 5
  7.     tunnel show log

参数说明:
-n:指定显示行数。
示例如下:
  1. odps@ project_name>tunnel show  history;
  2. 201506101639224880870a002ec60c  failed  'u --config-file /D:/console/conf/odps_config.ini --project odpstest_ay52c_ay52 --endpoint http://service.odps.aliyun.com/api --id UlVxOHuthHV1QrI1 --key 2m4r3WvTZbsNJjybVXj0InVke7UkvR d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false'

注意:
201506101639224880870a002ec60c 是上节中导入数据失败时的运行 ID。


Resume


修复执行历史记录,仅对上传数据有效。子命令使用提示:
  1. odps@  project_name>tunnel help resume;
  2. usage: tunnel resume [session_id] [-force]
  3.               resume an upload session
  4. -f,-force   force resume
  5. Example:
  6.     tunnel resume

示例如下:
修改 data.txt 文件为如下内容:
  1.     shop9,97,100
  2.     shop10,10,200

修复执行上传数据,如下所示:
  1. odps@ project_name>tunnel resume 201506101639224880870a002ec60c --force;
  2. start resume
  3. 201506101639224880870a002ec60c
  4. Upload session: 201506101639224880870a002ec60c
  5. Start upload:d:\data.txt
  6. Resume 1 blocks
  7. 2015-06-10 16:46:42     upload block: '1'
  8. 2015-06-10 16:46:42     upload block complete, blockid=1
  9. upload complete, average speed is 0 KB/s
  10. OK

注意:
201506101639224880870a002ec60c 为上传失败的 session ID。

数据验证,如下所示:
  1. odps@ project_name>select * from sale_detail where sale_date='201312';
  2. ID = 20150610084801405g0a741z5
  3. +-----------+-------------+-------------+-----------+--------+
  4. | shop_name | customer_id | total_price | sale_date | region |
  5. +-----------+-------------+-------------+-----------+--------+
  6. | shop9     | 97          | 100.0       | 201312    | hangzhou |
  7. | shop10    | 10          | 200.0       | 201312    | hangzhou |
  8. +-----------+-------------+-------------+-----------+--------+


Download


子命令使用提示:
  1. odps@ project_name>tunnel help download;
  2. usage: tunnel download [options] <[project.]table[/partition]> <path>
  3.               download data to local file
  4. -c,-charset <ARG>                 specify file charset, default ignore.
  5.                                    set ignore to download raw data
  6. -ci,-columns-index <ARG>          specify the columns index(starts from
  7.                                    0) to download, use comma to split each
  8.                                    index
  9. -cn,-columns-name <ARG>           specify the columns name to download,
  10.                                    use comma to split each name
  11. -cp,-compress <ARG>               compress, default true
  12. -dfp,-date-format-pattern <ARG>   specify date format pattern, default
  13.                                    yyyy-MM-dd HH:mm:ss
  14. -e,-exponential <ARG>             When download double values, use
  15.                                    exponential express if necessary.
  16.                                    Otherwise at most 20 digits will be
  17.                                    reserved. Default false
  18. -fd,-field-delimiter <ARG>        specify field delimiter, support
  19.                                    unicode, eg \u0001. default ","
  20. -h,-header <ARG>                  if local file should have table header,
  21.                                    default false
  22.     -limit <ARG>                   specify the number of records to
  23.                                    download
  24. -ni,-null-indicator <ARG>         specify null indicator string, default
  25.                                    ""(empty string)
  26. -rd,-record-delimiter <ARG>       specify record delimiter, support
  27.                                    unicode, eg \u0001. default "\r\n"
  28. -sd,-session-dir <ARG>            set session dir, default
  29.                                    D:\software\odpscmd_public\plugins\dshi
  30.                                    p
  31. -te,-tunnel_endpoint <ARG>        tunnel endpoint
  32.     -threads <ARG>                 number of threads, default 1
  33. -tz,-time-zone <ARG>              time zone, default local timezone:
  34.                                    Asia/Shanghai
  35. usage: tunnel download [options] instance://<[project/]instance_id> <path>
  36.               download instance result to local file
  37. -c,-charset <ARG>                 specify file charset, default ignore.
  38.                                    set ignore to download raw data
  39. -ci,-columns-index <ARG>          specify the columns index(starts from
  40.                                    0) to download, use comma to split each
  41.                                    index
  42. -cn,-columns-name <ARG>           specify the columns name to download,
  43.                                    use comma to split each name
  44. -cp,-compress <ARG>               compress, default true
  45. -dfp,-date-format-pattern <ARG>   specify date format pattern, default
  46.                                    yyyy-MM-dd HH:mm:ss
  47. -e,-exponential <ARG>             When download double values, use
  48.                                    exponential express if necessary.
  49.                                    Otherwise at most 20 digits will be
  50.                                    reserved. Default false
  51. -fd,-field-delimiter <ARG>        specify field delimiter, support
  52.                                    unicode, eg \u0001. default ","
  53. -h,-header <ARG>                  if local file should have table header,
  54.                                    default false
  55.     -limit <ARG>                   specify the number of records to
  56.                                    download
  57. -ni,-null-indicator <ARG>         specify null indicator string, default
  58.                                    ""(empty string)
  59. -rd,-record-delimiter <ARG>       specify record delimiter, support
  60.                                    unicode, eg \u0001. default "\r\n"
  61. -sd,-session-dir <ARG>            set session dir, default
  62.                                    D:\software\odpscmd_public\plugins\dshi
  63.                                    p
  64. -te,-tunnel_endpoint <ARG>        tunnel endpoint
  65.     -threads <ARG>                 number of threads, default 1
  66. -tz,-time-zone <ARG>              time zone, default local timezone:
  67.                                    Asia/Shanghai
  68. Example:
  69.     tunnel download test_project.test_table/p1="b1",p2="b2" log.txt
  70.     tunnel download instance://test_project/test_instance log.txt

参数说明:

  • -c:本地数据文件编码,默认为 UTF-8。

  • -ci:指定列索引(从 0)下载,使用逗号分隔。

  • -cn:指定要下载的列名称,使用逗号分隔每个名称。

  • -cp,—compress:指定是否压缩后再下载,减少网络流量,默认开启。

  • -dfp:DateTime 类型数据格式,默认为 yyyy-MM-dd HH:mm:ss。

  • -e:当下载 double 值时,如果需要,使用指数函数表示,否则最多保留 20 位。

  • -fd:本地数据文件的列分割符,默认为逗号。

  • -h:数据文件是否包括表头,如果为 true,则 dship 会跳过表头从第二行开始下载数据。

  • -limit:指定要下载的文件数量。

  • -ni:NULL 数据标志符,默认为“ ”(空字符串)。

  • -rd:本地数据文件的行分割符,默认为 \r\n。

  • -sd:设置 session 目录。

  • -te:指定 tunnel endpoint。

  • -threads:指定 threads 的数量,默认为 1。

  • -tz:指定时区。默认为本地时区:Asia/Shanghai。

示例如下:
下载数据到 result.txt 文件中,如下所示:
  1.     $ ./tunnel download sale_detail/sale_date=201312,region=hangzhou result.txt;
  2.     Download session: 201506101658245283870a002ed0b9
  3.     Total records: 2
  4.     2015-06-10 16:58:24     download records: 2
  5.     2015-06-10 16:58:24     file size: 30 bytes
  6.     OK

验证 result.txt 的文件内容,如下所示:
  1.     shop9,97,100.0
  2.     shop10,10,200.0


Purge


清除 session 目录,默认清除距离当前日期 3 天内的。子命令使用提示:
  1. odps@ project_name>tunnel help purge;
  2. usage: tunnel purge [n]
  3.               force session history to be purged.([n] days before, default
  4.               3 days)
  5. Example:
  6.     tunnel purge 5

数据类型说明
类型描述
STRING字符串类型,长度不能超过8MB。
BOOLEN上传值只支持”true”,”false”,”0”,”1”。下载值为true/false且不区分大小写。
BIGINT取值范围[-9223372036854775807,9223372036854775807]。
DOUBLE1.有效位数16位
2.上传支持科学计数法表示
3.下载仅使用数字表示
4.最大值:1.7976931348623157E308
5.最小值:4.9E-324
6.无穷大:Infinity
7.无穷小:-Infinity
DATETIMEDatetime类型默认支持时区为GMT+8的数据上传,可以通过命令行指定用户数据日期格式的format pattern。

如果您上传 DATETIME 类型的数据,需要指定时间日期格式,具体格式请参见 SimpleDateFormat。
  1.     "yyyyMMddHHmmss": 数据格式"20140209101000"
  2.     "yyyy-MM-dd HH:mm:ss"(默认):数据格式"2014-02-09 10:10:00"
  3.     "yyyy年MM月dd日": 数据格式"2014年09月01日"

示例如下:
  1.     tunnel upload  log.txt  test_table -dfp  "yyyy-MM-dd HH:mm:ss"

空值:所有数据类型都可以有空值。

  • 默认空字符串为空值。

  • 可在命令行下通过 -null-indicator 参数来指定空值的字符串。
    1.   tunnel upload log.txt test_table -ni "NULL"

字符编码:您可以指定文件的字符编码,默认为 UTF-8。
  1.    tunnel upload log.txt test_table -c "gbk"

分隔符:tunnel 命令支持您自定义的文件分隔符,行分隔符选项为 -record-delimiter,列分隔符选项为 -field-delimiter。
分隔符说明如下:

  • 支持多个字符的行列分隔符。

  • 列分隔符不能够包含行分隔符。

  • 转义字符分隔符,在命令行方式下只支持 \r、\n 和 \t。

示例如下:
  1. tunnel upload log.txt test_table -fd "||" -rd "\r\n"
tunnel数据 用户指南上传 conn数据 MaxCompute数据tunnel tunnel用户指南
分享到
取消 提交回答
全部回答(0)
大数据
使用钉钉扫一扫加入圈子
+ 订阅

大数据计算实践乐园,近距离学习前沿技术

相似问题
最新问题