且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MaxCompute 客户端 odpscmd 使用说明 | 学习笔记

更新时间:2022-09-02 15:39:07

开发者学堂课程【SaaS  模式云数据仓库系列课程 —— 2021数仓必修课MaxCompute 客户端 odpscmd 使用说明】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/55/detail/1036


MaxCompute 客户端 odpscmd 使用说明


内容简介:

1.odpscmd 在 MaxCompute 生态中的定位

2.快速开始:一个完整简单的小例子

3.客户端提供的能力框架

4.客户端重点场景说明

5.容易碰到的问题

1.odpscmd 在 MaxCompute 生态中的定位

命令行工具在 MaxCompute 中的位置

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

odpscmd 是命令行工具的名称,在整个 MaxCompute 是处于最上端的,在MaxCompute 中是逐渐往上支撑的,真正暴露给用户的其实是有一套 API,API 是最核心的一些接口,不管是 JAVA 还是 SDK 也是调用 API 的,实际上命令行工具是对 MaxCompute 开发的 API 做的一些深度的包装,通过一个工具的形式在客户端以命令的方式提供作业,这些作业再通过接口的方式进行集群并进行相关的管理和开发使用。

在过程中可能会遇到的问题,在网站推的比较多的是 MaxCompute 以及DataWorks 的组合,因为在操作使用 MaxCompute 的需要再 DataWorks 做一个开通,而实际上 MaxCompute 有自身的生态工具包含了命令行工具,odpscmd 、以及基 于 Java idea 开发环境的插件 studio。

DataWorks 也是一个独立的产品,它实际上也是通过调用 MySQL 底层的 Restful API ,把在 B/S 端中所做的用户管理,用户开发提交,运维的集成过去,满足一站式仓库的解决方案,在这主要强调 MySQL 和 B/S 段的集成关系。

Odpscmd 实际上是作为命令行工具,很像 PostgreSQL 数据库,但是一个黑屏的操作管理。


2.快速开始:一个完整简单的小例子

模拟常见数据处理各种环节的例子:创建项目、瞎下载客户端、配置连接、创建用户并赋权、建表、上传数据、数据加工处理、作业查看、数据消费。

大数据加工处理的环节:数据的准备,数据接入,数据加工,数据消费。

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

1、下载与配置安装

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

先观看目录,odpscmd.public 是实际下载解压后的一个包,解压之后打开,在连接之前进入 cof 目录,找到 odps_config.ini 的配置文件。

启动客户端,在 eclipse 环境中,把 opdscmd 加入 path 环境中去,到决定路径去敲 cmd ,这时会读取刚刚配置好的文件,项目以及所录入的 key 信息进行认证,这就可以连接到 project,能够敲击类似 show tables 的命令,可以看到数据仓库中已经提前进行了数据的建模,建的表。今天主要是对建立的表 WEBsite (是一张分区表)进行一个演示。

2、数据环境准备

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

快速开始的例子:

通过 DataX 这种开源工具来执行一个命令,将生成的业务表通过任务插入到旧的数据表。

数据同步完成后,可以简单的检索一下这张表,数据可以通过一些同步工具Dataworks 或是 DataX 进行数据同步,同步到环境当中,通过cmd去手工写一些作业,然后进行数据加工处理。若是在遇到的作业较长的时候,可能会想查看作业运行情况,而 cmd 也是提供作业监控的命令,show p可以检索出全量历史作业,作业会有 instance id ,每个 instance 是作业提交的实例,可以查看作业的基本信息、状况,同时在事后也能检索到作业的 log view。

Logview 是一种基于 web 的一种监控诊断的一种工具,该工具在后期还会有专门的介绍,在这里主要是说 odpscmd 主要是提供一种作业的提交、作业事后的查看、对指定作业详情查看的能力。


3、数据加工处理示例

数据加工脚本

查看任务

数据下载消费

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

数据在被处理加工之后会有很多简单处理的场景,在这主要是以 odpscmd 中集成的数据下载工具—— tunnel,对结果进行数据下载,再通过 cl 或是 ask 工具进行分析。

执行 tunnel download 后它会自动下载到本地文件中,找到刚刚文件目录查看对应的文件是否成功,以上就是通过 web 的名称做分组聚合的一个结果。

它所能具备完成以下的能力:包括对项目空间的管理,表/视图/分区,数据库中的资源、函数,一些实例,提供数据通道进行数据的上传、下载,同时对用户的安全与权限提供相关命令以及其他的操作。

操作和管理对象

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

首先是对项目的空间管理,通过 use 可以在多个项目中快速切换项目空间。

项目空间相关操作

项目空间是 MaxCompute 的基本组织单元,是进行多用户隔离和访问控制的主要边界。

(1)***切换进入具备访问权限的项目空间

(2)进入项目空间后可以直接操作项目空间下的对象,包括:

表、资源、函数等。

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

表操作管理

其中的命令可以在 odpscmd 中轻松找到,包括表的创建、删除、修改,例如想修改表的列名分区,可以用 alter; 非分区的可以选择 truncate 进行修改在这给出了跟表相关的命令以及帮助问答。

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

视图及分区操作, view 通过把一些复杂进行二次封装更容易对外去暴露,对view提供创建、 drop 、查看的操作;而 partition 可以查出表名的分区数量、名称,也可以对其修改、重命名。

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

资源与函数相关操作

很多深度用户会发现在处理自身业务时往往会使用 udf 去做复杂的运算,这时候需要用户自定义的去上传一个包,这些包对 于 udf 来说就叫 resource,resource 提供的命令就是上传一个自定义文件等等,也可以查看资源数量、删除资源。

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

实例相关操作

在客户端提交的作业,但记不住 id,可以通过一些时间的物理限制来进行作业列表的获取,在获取 instance 列表之后,可以用 wait 的来查询详情


MaxCompute   客户端  odpscmd  使用说明 | 学习笔记Tunnel 相关操作

Tunnel 能够进行数据的上传下载,很多开发者会在 Linux 环境中通过 Tunnel 进行数据的同步,在生产环境中,对数据重传的要求很高需要提供断点机制

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

安全及权限相关操作:


MaxCompute   客户端  odpscmd  使用说明 | 学习笔记角色相关权限管理

通过 role 在数据库中创建角色,为角色赋权把某一个角色加入到其中去操作管理,同时也能查看 listrole 有什么角色。

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

用户相关权限管理:将用户加入到项目中去,通过项目获取用户对应的权限,能够对用户进行添加、修改、删除、移除、对用户权限的管理。

项目空间的数据保护:可以设计权限对项目空间进行保护。

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

权限查看:通过命令行方式进行查看具体用户的权限配置

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

其他操作: MaxComputer console 还提供一些其他丰富的命令。

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记




4.客户端重点场景说明

场景:通过 shell 脚本调用 tunnel 命令进行文件上下传

基础上传方式

文本命令

使用分区表上传

Odps 下载数据

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

场景:调试 odpscmd 命令

在 Shell 脚本中,如何执行 MaxCompute 命令?

crontable 时执行 SQL。

A: MaxCompute 命合支持-f参数,可在脚本或其它程序中直接以 odps-f< 文件路径>的方式支持 MaxCompute 命令。

odpscmd-fxx. sql>>path/to/odpscmd. log 2>&1

动态参数:目前不支持传入变量。有个变通的方式:在cmd. sh脚本文件中,动

态构造 MaxCompute 的执行语句。

B:可以用 -e 直接运行语句

任务执行的输出记录下来,后续出了问题可以到日志文件里获取 odpscmd-fxx. sql>>path/to/odpscmd. log 2>&1。

场景:运行数据查询/数据加工作业 UDF  

配置环境安装配置环境,开发并使用本地模式测试 UDF2. 打成 Jar 包 将开发好的UDF导出 成Jar 包 

3. 注册  MaxCompue 资源数据开发上新建资源上传 jar 包,注册成 MaxCompute资源 

4.创建函数数据开发上新建函数并关联已上传  MaxCompute 资源

5.  在 SQL 中试用数据开发上新建 SQL  脚本测试使用自定义 函数 Java 编程环境 。

1.准备测试的数据环境

create table udf _ demo(price bigint);

insert into udf-demo values(8958355);

insert into udf _ demo values(123566677);

2.通过 Intelli JIDEA 编写和上传 UDF 到 maxcompute 项目

add jar dataly resourceslmapeduce-examples. jar-f;

3.通过命合行创建 function create function Ten Thousand Number as com/allyun,odops. Ten Thousand Number Help using "TenThousandNumberHelp. jar;

4.测试验证 UDF 功能

Select TenThousandNumber(price) from udf demo:

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记

场景:运行数据查询/

step0:编写并打包 MR 程序

step1:新建数据表

step2:上传数据

step3:上传本地MRJar包

step4:获取结果

数据加工作业 MR :

1.写 MR 代码并打包

2.应用所需数据的准备

·创建测试输入输出表CREATETABLEwcjn(keySTRING,value STRING);CREATETABLE wc out(key STRING,cntBIGINT);

·插入测试数据insert into table wc _ in select'238',val 238' from(select count(*)

from wc. in)a;

3.添加 jar 到 project 资源

addjar/home/user/mr _ example,jar

4.运行wordCount

jar-resourcesmr _ example,jar-classpath

/home/quning/mr=example,jar com. aliyun,example. Word Count

wc _ in wc _ out;

5.查看结果

select*from wc _ out;

MaxCompute   客户端  odpscmd  使用说明 | 学习笔记


5.常见问题

问题:动态参数传入?

回答:通过 shell 方式变相实现

问题:手工抗行 odpscred 命令正常,通过 shell 脚本调用时报错?

回答:检查 shel 脚本下有没有设置 JAVA 的环境变量.  JAVA.HOME,PATH。