数据开发与运行

更新时间:
复制 MD 格式

本文为您介绍数据开发的相关问题。

如何在pyodps调用第三方包?

需要使用独享调度资源组进行操作,详情请参考文档:PyODPS节点中调用第三方包

如何控制表数据查询以后是否可以下载?

DataWorks下载数据的前提是要将下载功能打开,如果没有下载入口,说明工作空间未开启下载,如果有需要可以联系主账号或者工作空间管理员在工作空间管理处开启。在DataWorks控制台左侧导航栏单击工作空间配置,在页面中找到安全设置区域,通过能下载select结果开关控制表数据查询后是否允许下载。开启该开关(蓝色状态)即允许下载select查询结果。

查询数据后在查询结果右下角会有下载入口。查询执行完成后,在结果页面底部工具栏中单击下载按钮即可下载查询结果数据。

DataWork界面下载由于引擎限制只能下载10000条数据。

如何下载超过1万条的表数据?

需要通过MaxCompute tunnel操作:SQLTask配合Tunnel实现大量数据导出示例

为什么EMR通过DataWorks可视化建表失败报错:call emr exception?

  • 可能原因:EMR所在的ECS集群的安全组缺失必要安全组配置。注册EMR集群时,您需要添加安全组策略,否则可能会出现上述建表失败提示。

    EMR所在的ECS集群的安全组缺失必要安全组配置。注册EMR集群时,您需要添加以下安全组策略,否则可能会出现上述建表失败提示。

    • 授权策略:允许

    • 协议类型:自定义TCP

    • 端口范围:8898/8898

    • 授权对象:100.104.0.0/16

  • 如何处理:查看EMR所在的ECS集群的安全组配置情况,补充上述安全组策略。

如何在节点内使用资源?

右键目标资源节点,选择引用资源

##@resource_reference{"pyodps_packagetest.py"}
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath('pyodps_packagetest.py'))) #将资源引入工作空间
import pyodps_packagetest #引用资源
pyodps_packagetest.printname() #调用方法

如何下载上传到DataWorks的资源?

右键目标资源节点,选择查看历史版本。在资源文件的版本信息对话框中,版本历史表格包含版本、提交人、提交时间、变更类型、状态、备注和操作列。在操作列中,单击代码可查看该版本的资源内容,单击回滚可将资源回滚至该版本。对话框底部提供比较按钮用于版本对比。

超过30M的资源如何上传?

超过30M的资源需要通过[tunnel](使用Tunnel命令上传下载数据)上传,上传后再使用MaxCompute资源功能添加到DataWorks进行后续的资源使用操作。详情请参考常见问题:通过odpscmd上传的资源如何在DataWorks上使用?

通过odpscmd上传的资源如何在DataWorks上使用?

odpscmd上传的资源在DataWorks上使用请在MaxCompute资源处将资源添加到数据开发。在DataStudio左侧导航栏中单击MaxCompute资源,主内容区将展示当前工作空间下的MaxCompute资源列表(包括通过odpscmd上传的资源)。选中目标资源后,在右侧详情面板底部单击添加到数据开发,即可将该资源引入数据开发流程中使用。

DataWorks如何上传自己本地编写的jar并执行?

您需要在数据开发界面将该jar作为资源上传到DataWorks,节点使用该jar资源时,您需要先右键目标资源节点 > 引用资源(会在节点最上方自动多出一条注释),然后直接使用资源名执行。在DataWorks DataStudio数据开发页面,展开左侧文件树的资源节点,右键单击选择新建 > JAR创建JAR资源。在右侧上传资源面板中,单击上传图标选择本地JAR文件(如ip2region.jar),勾选上传为ODPS资源复选框,资源会同步上传至MaxCompute(ODPS)。单击点击上传完成上传后,务必提交并发布该资源,否则运行时会报resource not found错误。

例如:在Shell节点内##@resource_reference{"test.jar"}java -jar test.jar

如何实现在DataWorks上使用MaxCompute表资源?

目前DataWorks不支持直接使用图形界面上传MaxCompute表资源,可参见MaxComputeUDF示例:引用表资源查看引用资源表方式。如果您想在DataWorks上使用MaxCompute表资源,可按照如下:

  1. MaxCompute侧通过以下SQL语句添加表为表资源,详情请参见添加资源

    add table <table_name> [partition (<spec>)] [as <alias>] [comment '<comment>'][-f];
  2. DataWorks数据开发页面创建Python类型的资源,本示例资源名为get_cache_table.py,用来遍历查找到MaxCompute内添加的表资源,该Python代码请参见开发代码

  1. DataWorks数据开发页面,新建函数,本示例函数名为table_udf

    该函数中的需要填写的内容如下:

    • 类名get_cache_table.DistCacheTableExample

    • 资源列表:Python文件直接下拉选择get_cache_table.py,表资源需要在脚本模式下添加。

  2. 完成函数注册后,即可参照使用示例构造测试数据并调用注册的函数。

DataWorks中提交任务,提示 “未设置默认或可用资源组”,如何配置资源组?

遇到这种问题,您可在节点编辑页面右侧的调度配置中找到调度资源组,下拉设置您需使用的调度资源组。如没有找到可使用的调度资源组,可通过以下步骤为您所使用的工作空间绑定对应资源组。

  1. 登录DataWorks管理控制台,切换地域后,单击DataWorks管理控制台左侧导航栏的资源组,进入资源组列表

  2. 在资源组列表页面找到已创建的资源组,单击操作列的绑定工作空间

  3. 绑定工作空间页面,找到已创建的DataWorks工作空间,单击其操作列的绑定

完成以上步骤后,您可前往节点编辑页面右侧的调度配置中,下拉设置您需使用的调度资源组。

Python资源是否支持调用另一个Python资源?

两个资源在同一个工作空间的前提下,Python资源支持调用另一个Python资源。

PyODPS是否支持调用自定义函数来使用第三方包?

如果您不想通过DataFramemap方法使用test函数,PyODPS同样支持直接调用自定义函数来导入第三方包,详情请参见PyODPS使用第三方包

PyODPS 3中调用Pickle文件报错:_pickle.UnpicklingError: invalid load key, '\xef

如果您的代码中存在特殊字符,请将代码打成zip再上传,然后在代码中进行解压使用。

如何删除MaxCompute资源?

资源创建完成后,如果需要删除资源,简单模式下直接右键单击所需删除的资源即可,标准模式下需要先在开发环境中删除资源,再在生产环境中删除资源,以下以删除生产环境的资源为例,为您演示删除资源的操作步骤。

说明

如果您的DataWorks为标准模式,则开发环境和生产环境分离,在DataWorksDataStudio删除资源时,只删除了开发环境的资源,生产环境的资源需要将删除操作发布到生产环境,生产环境的资源才会被删除下线。

  1. 在开发环境中删除资源。在对应业务流程下,选择MaxCompute > 资源,右键待删除的资源后单击删除,在弹出的页面单击确认

  2. 在生产环境中删除资源。删除操作会在任务发布界面生成一条待发布的记录,发布后才能生产任务才会下线。您可以在数据开发DataStudio页面的右上角单击任务发布,过滤变更类型为下线,找到上述步骤下线资源的变更发布包后,单击操作列的发布,在弹出的页面中单击发布。完成发布后,生产环境的资源才会被删除。

为什么在EMR集群中启用了Kerberos后,在EMR Spark节点开发中使用YARN-Cluster模式执行spark-submit时会报错DlfMetaStoreClientFactory not found?

  • 报错详情Class com.aliyun.datalake.metastore.hive2.DlfMetaStoreClientFactory not found?

  • 原因分析:EMR集群开启Kerberos之后,在YARN-Cluster模式下,Driverclasspath不会自动扩展以包含指定目录中的JAR文件,从而导致执行Spark任务时报错,详情可参见EMR on ECS常见问题

  • 解决方法:手动指定DLF 相关包运行即可解决,请参考以下步骤:

    • EMR集群开启Kerberos之后,使用spark-submitYARN-Cluster模式下提交任务时,需要增加--jars参数。除了用户程序本身依赖的JAR包外,还需要添加/opt/apps/METASTORE/metastore-current/hive2目录中的所有JAR包。

      EMR Spark 节点 Yarn Cluster 模式手动指定 DLF 相关包,可参考以下代码。

      重要

      YARN-Cluster模式下,--jars参数中的所有依赖必须以“,”分隔,不支持目录形式。

      spark-submit --deploy-mode cluster --class org.apache.spark.examples.SparkPi --master yarn  --jars /opt/apps/METASTORE/metastore-current/hive2/aliyun-java-sdk-dlf-shaded-0.2.9.jar,/opt/apps/METASTORE/metastore-current/hive2/metastore-client-common-0.2.22.jar,/opt/apps/METASTORE/metastore-current/hive2/metastore-client-hive2-0.2.22.jar,/opt/apps/METASTORE/metastore-current/hive2/metastore-client-hive-common-0.2.22.jar,/opt/apps/METASTORE/metastore-current/hive2/shims-package-0.2.22.jar /opt/apps/SPARK3/spark3-current/examples/jars/spark-examples_2.12-3.4.2.jar
    • 手动指定 DLF 相关包运行时,需配置有权限访问DLFOSS权限的AK信息,否则会出现STS认证报错,报错信息可能为以下两条中的任意一条。

      • Process Output>>> java.io.IOException: Response{protocol=http/1.1, code=403, message=Forbidden, url=http://xxx.xxx.xxx.xxx/latest/meta-data/Ram/security-credentials/}

      • at com.aliyun.datalake.metastore.common.STSHelper.getEMRSTSToken(STSHelper.java:82)

      任务级别,在节点右侧高级配置中增加如下参数(如需全局生效,可以在集群服务配置spark全局参数中配置)
      "spark.hadoop.dlf.catalog.akMode":"MANUAL",
      "spark.hadoop.dlf.catalog.accessKeyId":"xxxxxxx",
      "spark.hadoop.dlf.catalog.accessKeySecret":"xxxxxxxxx"

节点删除后如何还原?

节点删除后可以进入回收站进行还原。在DataStudio左侧导航栏中单击回收站,在已删除节点列表中右键单击目标节点,选择还原即可恢复该节点。

如何查看节点版本?

打开单个节点配置界面可以查看节点的版本

重要

已提交才会生成版本。

在节点配置界面右侧单击版本页签,可查看版本列表,包括文件ID、版本号、提交人、提交时间等信息。在操作列,单击代码可查看对应版本的代码,单击回滚可将节点回滚至该版本。勾选任意两个版本的复选框后,单击底部比较按钮可对比两个版本的差异。

如何克隆业务流程?

您可以使用节点组功能:使用节点组

如何将工作空间下的节点代码导出?

您可以使用迁移助手功能:迁移助手

如何查看业务节点提交状态?

如果您希望查看业务节点提交状态,可以选择数据开发 > 业务流程,展开对应的业务流程列表,即可查看当前业务流程下所有节点状态。如果节点名称左侧存在图标图标,表示该节点已提交;如果节点名称左侧不存在图标图标,表示该节点未提交。

当业务流程中包含多个节点时,是否可以批量配置节点的调度信息?

DataWorks不支持对业务流程配置调度信息,对于业务流程内的节点,您无法批量配置调度信息,只能逐个配置节点的调度信息。例如,一个业务流程中包含20个节点,您只能为每个节点逐个配置调度信息。

节点被删除,实例是否受影响?

调度系统每天会根据时间属性为该任务生成对应的一个或多个实例,当一个任务运行一段时间后被删除,则实例不会被删除。当实例在删除任务后被触发运行时,会由于找不到需要运行的代码而失败。

修改后的节点任务提交发布至生产环境后,是否会覆盖之前生产环境的错误节点?

不会覆盖之前的节点,未运行的实例会用最新代码运行,不会删除已生成的节点实例。如果调度参数有变化,需要重新生成实例去运行。

如何可视化新建表?

可以在数据开发,表管理和业务流程内的表容器中建表。在DataWorks DataStudio左侧导航栏选择表管理,单击顶部工具栏的新建表图标创建表。右侧详情面板中可配置表名、MaxCompute引擎实例、表来源等信息。基本属性区域包含中文名、一级主题、二级主题和描述。物理模型设计区域可设置分区类型、生命周期、层级、物理分类及表类型(内部表/外部表)。面板顶部提供DDL模式从开发环境加载提交到开发环境从生产环境加载提交到生产环境等操作按钮。右键单击表目录中的表可执行重命名表导入数据删除表操作。

如何对生产表添加字段?

主账号可以在表管理页面,对生产表添加字段后,提交至生产环境。

子账号需要拥有运维或项目管理员角色,才可以在表管理页面,对生产表添加字段后,提交至生产环境。

如何删除表?

删除开发表:可以在数据开发界面删除。

删除生产表:

  • 生产表请前往数据地图我的数据中删除表。

  • 您可以创建一个ODPS SQL节点,输入并执行DROP语句。创建ODPS SQL节点的详情请参见开发ODPS SQL任务,删除表的语法格式请参见表操作

进入我拥有的数据页面后,勾选目标表,单击操作列的删除链接删除单个表,或选中多个表后单击页面底部的批量删除按钮批量删除。

如何将本地数据上传到MaxCompute表中?

您可以进入数据开发找到导入表功能导入本地数据。在DataWorksDataStudio数据开发页面,单击工具栏中的导入图标,打开数据导入向导对话框。在对话框中配置以下参数:选择数据导入方式选择上传本地文件文件格式选择CSV,单击浏览...选择本地CSV文件(仅支持.csv文件类型),选择分隔符选择逗号原始字符集选择GBK导入起始行设置为1,并勾选首行为标题

EMR集群中建表失败,界面提示:call emr exception?

  • EMR所在的ECS集群的安全组缺失必要安全组配置。注册EMR集群时,您需要添加以下安全组策略,否则可能会出现上述建表失败提示。

    • 授权策略:允许

    • 协议类型:自定义TCP

    • 端口范围:8898/8898

    • 授权对象:100.104.0.0/16

  • 解决方法:

    查看EMR所在的ECS集群的安全组配置情况,补充上述安全组策略。

如何在开发环境访问生产环境数据?

标准模式下,如果在数据开发界面需要查询生产环境的数据,请使用项目名.表名进行访问。

如果是简单模式升级到标准模式,在数据开发界面需要查询生产环境数据,则需要先申请生产者角色权限,再使用项目名.表名进行访问。申请权限具体请参考申请表权限

数据开发界面历史执行日志如何获取?

您可以进入数据开发界面左侧边栏找到运行历史模块,查看历史执行日志。

数据开发运行历史保留多长时间?

数据开发界面的运行历史默认保留3天。

说明

生产运维中心日志与实例保留时长请参考:日志和实例保留多长时间?

如何对节点、资源、函数等进行相关批量修改相关属性的操作?

您可以在数据开发界面左侧工具栏中进入批量操作界面。支持针对节点、资源、函数进行批量操作,批量修改完成后,您可以批量提交,并在任务发布界面批量发布,让节点变更操作生产环境生效。

在批量操作界面选中目标节点后,底部操作栏提供提交修改责任人修改引擎实例按钮;单击更多可展开修改调度资源组修改调度重跑属性修改调度类型修改调度周期修改调度超时时间删除等操作。右上角可单击历史操作记录查看批量操作历史。

如何在数据开发页面批量修改业务流程下节点使用的调度资源组?

您可以在数据开发页面指定的业务流程名处,进入资源组编排,您可以在此页面批量修改该业务流程内的节点指定的调度资源组,修改完成后,您可以选择提交按钮进行批量提交,并在任务发布界面批量发布,让节点使用的调度资源组变更操作在生产环境生效。在数据开发页面,打开业务流程的资源组编排页签。左侧导航树可按节点类型(数据集成、MaxCompute、Hologres 等)筛选节点。右侧上方为公共调度资源组独享资源组的扩容配置区域,下方为节点列表,可通过节点名称、节点类型、引擎类型、引擎实例、负责人等条件筛选目标节点。选中需要修改的节点后,单击页面底部的切换资源组按钮,即可批量修改所选节点使用的调度资源组。

使用Power BI连接MaxCompute报错,该如何处理?

目前MaxCompute不支持连接Power BI,建议您使用交互式分析(Hologres)进行连接,详情请参见访问域名

Openapi调用报错access is forbidden. Please first activate DataWorks Enterprise Edition or Flagship Edition

openapi需要DataWorks企业版。详情请参见:DataWorks OpenAPI概述

如何获取Python SDK调用案例?

您可以在对应的API页面点击调试查看Python SDK的示例。

任务执行没有instanceid,如何关闭ODPS加速模式?

获取instanceid需要关闭加速模式。

说明

DataWorks只支持下载1W条数据,超过1W的数据需要通过tunnel下载,下载时需要instanceid、

提交任务成功
任务执行中...
任务执行中...
任务执行中...
任务执行中...
恭喜您!您的任务被选中以 MaxCompute 查询加速模式运行
MaxCompute 查询加速模式运行sql成功
SQL: SELECT a.real_name...

在运行任务的时候在odps sql节点编辑器里加上set odps.mcqa.disable=true; (需要和其他select语句一块执行)。

exception: [202:ERROR_GROUP_NOT_ENABLE]:group is not available报错

任务执行时产生Job Submit Failed! submit job failed directly! Caused by: execute task failed, exception: [202:ERROR_GROUP_NOT_ENABLE]:group is not available报错。

可能原因:您所绑定的资源组状态为不可用状态。

解决方法:登录DataWorks控制台, 单击左侧导航栏的资源组,找到您所使用的资源组,检查资源组状态是否为运行中。如果状态不是运行中,您可以重启该资源组或使用其他可用资源组。