本文以Tunnel 命令章节知识点为例,不说废话直接上干货!
一、 Tunnel概述
- Tunnel是MaxCompute提供的数据通道服务,各种异构数据源都可以通过Tunnel服务导入MaxCompute或从MaxCompute导出。
- Tunnel提供了RestfulAPI接口,提供了Java SDK,方便用户编程
二、命令行客户端odpscmd
- 基本语法
• Usage: tunnel <subcommand> [options] [args]
• subcommand
• upload (u) download (d) resume (r) show (s) purge (p) help (h)
- subcommand
• upload
• 上传数据到MaxCompute的表中。支持文件或目录(指一级目录)的上传,每一次上传只支持数据上传到一张表或表的一个分区。分区表一定要指定上传的分区,多级分区一定要指定到末级分区。
• download
• 从MaxCompute的表中下载数据。只支持下载到单个文件,每一次下载只支持下载一张表或一个分区到一个文件。分区表一定要指定下载的分区,多级分区一定要指定到末级分区。
• 其他命令
• resume
• 因为网络或Tunnel服务的原因出错,支持续传文件或目录。如果上传数据失败,通过resume命令进行断点续传,仅支持上传数据的续传。每次上传、下载数据被称为一个Session。在resume后指定session id完成续传。
• show
• 查看历史运行信息
• purge
• 清理Session目录,默认清理3天内的日志
• help
• 输出Tunnel帮助信息
- 常用参数
• -c,-charset <ARG> :数据文件字符编码,默认为UTF-8
- -ni,-null-indicator <ARG> :指定NULL数据标识符。默认值为""(空字符串)
• -fd,-field-delimiter <ARG>:分隔符
• -dfp,-date-format-pattern <ARG>:日期格式,指定DATETIME类型数据格式,默认为yyyy-MM-dd HH:mm:ss
• -sd,-session-dir <ARG> :指定Session目录。•
• 其他上传参数
• -acp,-auto-create-partition <ARG>
• 如果指定分区不存在,自动创建目标分区。默认值为False。
• -cp,-compress <ARG>
• 指定是否在本地压缩数据后再上传,减少网络流量。默认值为True
• -dbr,-discard-bad-records <ARG>
• 指定是否忽略脏数据(多列、少列、列数据类型不匹配等情况)。默认值为False。True:忽略全部不符合表定义的数据。False:如果遇到脏数据,则给出错误提示信息,目标表内的原始数据不会被污染
• -s,-scan <ARG>
• 指定是否扫描本地数据文件。默认值为True。True:先扫描数据,若数据格式正确,再导入数据。False:不扫描数据,直接导入数据。Only:仅扫描本地数据,扫描结束后不继续导入数据
三、Tunnle特点
- 支持对表的读写,不支持视图。
- 写表是追加模式。
- 采用并发以提高整体吞吐量。
- 避免频繁提交。
- 目标分区必须存在。
四、Tunnel上传下载限制
- Tunnel功能及Tunnel SDK当前不支持外部表操作
- Tunnel命令不支持上传下载ARRAY、MAP和STRUCT类型的数据
- 每个Tunnel的Session在服务端的生命周期为24小时,创建后24小时内均可使用,也可以跨进程/线程共享使用,但是必须保证同一个BlockId没有重复使用
- 如果您根据Session下载,请注意只有主账号创建的Session,可以被主账号及所属子账号下载
文章篇幅有限,更多阿里云ACP大数据高级工程师备考知识点及题库试题,可戳下方明~pian↓↓↓