详情页标题前

阿里云云原生大数据计算服务 MaxCompute使用说明-云淘科技

详情页1

本文为您介绍Tunnel命令的功能和如何通过Tunnel命令上传下载数据。

支持的工具

MaxCompute支持使用odpscmd和MaxCompute Studio运行Tunnel命令。具体操作请参见使用客户端(odpscmd)连接和认识MaxCompute Studio。

Tunnel命令功能

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

  • Upload:上传本地数据至MaxCompute表中。支持文件的上传,每一次上传只支持数据上传到一张表或表的一个分区。分区表一定要指定上传的分区,多级分区一定要指定到末级分区。更多信息请参见Upload 。
  • Download:下载MaxCompute表或指定Instance执行结果至本地。只支持下载到单个文件,每一次下载只支持下载一张表或一个分区到一个文件。分区表一定要指定下载的分区,多级分区一定要指定到末级分区。更多信息请参见Download。
  • Resume:因为网络或Tunnel服务的原因造成上传出错,可以通过Resume命令对文件进行续传。可以继续上一次的数据上传操作,但Resume命令暂时不支持下载操作。更多信息请参见Resume。
  • Show:显示历史任务信息。更多信息请参见Show 。
  • Purge:清理session目录,默认清理3天内的日志。更多信息请参见Purge。
  • help:获取帮助信息,每个命令和选择支持短命令格式。

说明 使用Tunnel命令过程中遇到的各类问题请参见Tunnel命令常见问题。

Tunnel上传下载限制

  • Tunnel功能及Tunnel SDK当前不支持外部表操作。您可以通过Tunnel直接上传数据到MaxCompute内部表,或者是通过OSS Python SDK上传到OSS后,在MaxCompute使用外部表做映射。关于外部表详情请参见概述。
  • Tunnel命令不支持上传下载ARRAY、MAP和STRUCT类型的数据。
  • 每个Tunnel的Session在服务端的生命周期为24小时,创建后24小时内均可使用,也可以跨进程/线程共享使用,但是必须保证同一个BlockId没有重复使用。说明 Tunnel Session:Server端会为该Upload/Download创建一个Session, 生成唯一UploadId/DownloadId标识该Upload/Download。Tunnel的Session在服务端的生命周期为24小时,超过24小时后,该Session将不可用。
  • 如果您根据Session下载,请注意只有主账号创建的Session,可以被主账号及所属子账号下载。

上传下载表数据

在操作之前,您需要准备待上传的数据文件data.txt,保存路径为d:\data.txt。文件内容如下所示。

shopx,x_id,100
shopy,y_id,200
shopz,z_id

说明 data.txt文件中第三行数据与下文中创建的分区表sale_detail的表定义不符,sale_detail定义了三列,但该行数据只有两列。上传下载表数据示例步骤如下。

  1. 在MaxCompute客户端,执行如下语句创建分区表sale_detail,并为分区表sale_detail添加分区。
    CREATE TABLE IF NOT EXISTS sale_detail(
          shop_name     STRING,
          customer_id   STRING,
          total_price   DOUBLE)
    PARTITIONED BY (sale_date STRING,region STRING);
    
    alter table sale_detail add partition (sale_date='201312', region='hangzhou');
  2. 使用upload命令上传数据文件data.txt至分区表sale_detail。
    • 命令示例
      tunnel upload d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false;
    • 返回结果
      Upload session: 20230505xxxxxxxxxxxb0b02dbb6bd
      Start upload:d:\data.txt
      Using \r
       to split records
      Upload in strict schema mode: true
      Total bytes:42   Split input to 1 blocks
      2023-05-05 10:11:35     upload block: '1'
      ERROR: column mismatch -,expected 3 columns, 2 columns found, please check data or delimiter

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

  3. 使用如下语句进行数据验证。
    • 命令示例
      select * from sale_detail where sale_date='201312';
    • 返回结果
      ID = 20230505xxxxxxxxxxxvc61z5+-----------+-------------+-------------+-----------+--------+| shop_name | customer_id | total_price | sale_date | region |+-----------+-------------+-------------+-----------+--------++-----------+-------------+-------------+-----------+--------+

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

  4. 使用show命令查询失败上传的session ID。
    • 命令示例
      tunnel show history;
    • 返回结果
      20230505xxxxxxxxxxxb0b02dbb6bd  failed  'upload d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false'
  5. 修改示例数据data.txt文件为如下内容,符合sale_detail的表结构。
    shopx,x_id,100shopy,y_id,200
  6. 执行resume命令修复执行上传数据。其中,20230505xxxxxxxxxxxb0b02dbb6bd为上传失败的session ID。
    • 命令示例
      tunnel resume 20230505xxxxxxxxxxxb0b02dbb6bd --force;
    • 返回结果
      start resume20230505xxxxxxxxxxxb0b02dbb6bdUpload session: 20230505xxxxxxxxxxxb0b02dbb6bdStart upload:d:\data.txtUsing \r to split recordsUpload in strict schema mode: trueResume 1 blocks 2023-05-05 10:32:39     upload block: '1'2023-05-05 10:32:40     upload block complete, block id: 1upload complete, average speed is 0 bytes/sOK
  7. 执行如下语句进行数据验证,上传成功。
    • 命令示例
      select * from sale_detail where sale_date='201312';
    • 返回结果
      ID = 20230505xxxxxxxxxxxx7afc9qcg +-----------+-------------+-------------+-----------+--------+ | shop_name | customer_id | total_price | sale_date | region | +-----------+-------------+-------------+-----------+--------+ | shopx     | x_id        | 100.0       | 201312    | hangzhou| | shopy     | y_id        | 200.0       | 201312    | hangzhou| +-----------+-------------+-------------+-----------+--------+
  8. 执行download命令将表sale_detail上的数据下载至本地result.txt。说明 此处将数据下载至本地路径path的命名规则如下:
    • 您可以将文件直接归档至MaxCompute客户端的bin目录中,此时path需要设置为文件名.后缀名
    • 也可以将文件归档至其他路径下,例如D盘的test文件夹,path需要设置为D: est\文件名.后缀名
    • 如果本地存在同名文件,会直接覆盖。
    tunnel download sale_detail/sale_date=201312,region=hangzhou result.txt;
  9. 验证result.txt的文件内容,如下所示,下载成功。 说明 下载成功后的文件中,只显示非分区字段值。
    shopx,x_id,100.0shopy,y_id,200.0

下载Instance数据

  • 方式一:使用tunnel download命令将特定Instance的执行结果下载到本地文件。
    1. 执行SELECT语句查询表sale_detail。
      select * from sale_detail;

      说明 如果前面已经对分区表sale_detail设置了禁止全表扫描,此处执行会报错Table(xxxx) is full scan with all partitions, please specify partition predicates,请参考错误码附录进行设置。

    2. 执行如下Tunnel命令下载执行结果到本地文件。
      --查看SELECT命令的instance IDshow p;--执行下载命令tunnel download instance://20170724071705393ge3csfb8 result.txt;
  • 方式二:通过配置参数使SQL查询默认采用InstanceTunnel方式输出执行结果。 在MaxCompute客户端中打开use_instance_tunnel选项后,执行的SELECT查询会默认使用InstanceTunnel来下载结果,从而避免在MaxCompute平台获取SQL查询结果时所遇到的获取数据超时和获取数据量受限的问题。打开该配置有以下两种方法: 说明 InstanceTunnel的约束与限制请参见InstanceTunnel约束与限制。
    • 在最新版本的客户端中,odps_config.ini文件里已经默认打开此选项,并且instance_tunnel_max_record被默认设置成了10000。
      # download sql results by instance tunneluse_instance_tunnel=true# the max records when download sql results by instance tunnelinstance_tunnel_max_record=10000

      说明 instance_tunnel_max_record用来设置通过InstanceTunnel下载SQL查询结果的条数。若不设置该项,则下载条数不受限制。

    • set console.sql.result.instancetunnel设置为true来开启此功能。
      • 打开Instance tunnel选项。
        set console.sql.result.instancetunnel=true;
      • 运行select query。
        select * from wc_in;

        返回结果如下。

        ID = 20170724081946458g14csfb8
        Log view:
        http://logview/xxxxx.....
        +------------+
        | key        |
        +------------+
        | slkdfj     |
        | hellp      |
        | apple      |
        | tea        |
        | peach      |
        | apple      |
        | tea        |
        | teaa       |
        +------------+
        A total of 8 records fetched by instance tunnel. Max record number: 10000

      说明 如果用InstanceTunnel的方式来输出SELECT查询结果,系统在最后一行会打印一条提示,此示例中Instance的执行结果共有8条数据。同理,您可以将set console.sql.result.instancetunnel设置为false来关闭此功能。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/158835.html

(0)
上一篇 2023年12月10日 上午1:28
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云负载均衡上传非阿里云签发证书-云淘科技

    上传非阿里云签发证书,您需要持有证书的公钥或私钥文件。 前提条件 上传非阿里云签发证书前,您必须: 已经购买了服务器证书。 已经生成了CA证书和客户端证书。具体信息,请参见生成CA证书。 限制条件 在上传证书前,注意每个账号最多可以创建100个证书。 操作步骤 登录传统型负载均衡CLB控制台。 在左侧导航栏,选择传统型负载均衡 CLB(原SLB) > …

    阿里云负载均衡 2023年12月10日
  • 阿里云对象存储OSS存储空间概览-云淘科技

    您可以在每个存储空间(Bucket)的概览页查看您对应Bucket的使用情况,包括存储量、访问流量、访问域名、自定义常用功能列表等。 基本信息 在基本信息区域,您可以查看存储空间名称、存储空间所在地域、存储类型、创建时间等信息。 当前使用情况在基础数据区域,您可以查看当前存储空间总存储量、本月流量、本月请求次数、文件数量、文件碎片。 重要 基础数据的统计结果…

    2023年12月10日
  • 阿里云对象存储OSS服务端签名直传并设置上传回调概述-云淘科技

    本文主要介绍如何基于Post Policy的使用规则在服务端通过各种语言代码完成签名,并且设置上传回调,然后通过表单直传数据到OSS。 背景信息 大多数情况下,用户上传文件后,应用服务器需要知道用户上传了哪些文件以及文件名;如果上传了图片,还需要知道图片的大小等,为此OSS提供了上传回调方案。 流程介绍 当用户要上传一个文件到OSS,而且希望将上传的结果返回…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云对象存储OSSiOS简单下载-云淘科技

    本文档介绍如何进行简单下载。 示例代码 下载文件时,您可以指定下载为本地文件或者下载为NSData。 OSSGetObjectRequest * request = [OSSGetObjectRequest new]; // 填写Bucket名称,例如examplebucket。 request.bucketName = @”examplebucket”; …

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSSPython客户端加密-云淘科技

    客户端加密是指将数据发送到OSS之前在用户本地进行加密。 免责声明 使用客户端加密功能时,您需要对主密钥的完整性和正确性负责。因您维护不当导致主密钥用错或丢失,从而导致加密数据无法解密所引起的一切损失和后果均由您自行承担。 在对加密数据进行复制或者迁移时,您需要对加密元信息的完整性和正确性负责。因您维护不当导致加密元信息出错或丢失,从而导致加密数据无法解密所…

    阿里云对象存储 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。