详情页标题前

阿里云云原生大数据计算服务 MaxComputeSQL其他常见问题-云淘科技

详情页1

本文为您介绍在MaxCompute执行SQL时,与数据类型、SQL限制等相关的常见问题。

问题类别 常见问题
数据类型
  • MaxCompute的时间类型字段是否可以不带时分秒?
  • 在执行MaxCompute SQL过程中,对DOUBLE类型的数据进行等值比较,为什么结果不符合预期?
  • 如何解决DECIMAL数据类型精度溢出问题?
  • 新创建的MaxCompute项目不支持数据类型自动隐式转换,如何解决?
  • 查询数据时,提示XXXtypeisnotenabled incurrentmode,如何解决?
SQL限制
  • 如何处理单字段大于8 MB的限制?
  • 在执行MaxCompute SQL过程中,报错partitions exceeds the specified limit,如何解决?
SQL作业运行
  • 如何非交互式运行MaxCompute SQL?
  • SQL能将MaxCompute的配置转移到另外一个阿里云账号上吗?
  • 如何将开发环境的表数据同步至生产环境的表中?
  • 如何判断一个字段是否为空?
  • 是否可以通过DataWorks的Shell节点调取MaxCompute SQL?
  • 如何在SQL中实现循环?
  • 如何在SQL中调用赋值节点?
SQL作业查看
  • 如何查看MaxCompute日执行的所有SQL?
  • 如何查看SQL作业消耗的资源量?
  • 如何查看SQL执行费用?
SQL作业调优 SQL作业运行过慢,如何优化?

MaxCompute的时间类型字段是否可以不带时分秒?

时间类型字段可以使用DATE数据类型。使用该数据类型时,您需要打开MaxCompute 2.0数据类型开关。更多MaxCompute 2.0数据类型信息,请参见2.0数据类型版本。

在执行MaxCompute SQL过程中,对DOUBLE类型的数据进行等值比较,为什么结果不符合预期?

由于MaxCompute中DOUBLE类型的数值存在一定的精度差,因此不建议直接使用等号(=)对两个DOUBLE类型的数据进行比较。

请对两个DOUBLE类型数据相减,然后取绝对值,当绝对值足够小时,判定两个DOUBLE类型的数据数值相等。

如何解决DECIMAL数据类型精度溢出问题?

您可以在Session级别执行set odps.sql.decimal.odps2=true;命令,打开2.0数据类型开关。但您需要注意,MaxCompute支持的DECIMAL类型数据的最大长度为38位,但实际业务处理过程中如果数据存储为最大长度,在数据处理过程中很容易出现数据溢出问题,建议调小数据长度。

新创建的MaxCompute项目不支持数据类型自动隐式转换,如何解决?

关闭MaxCompute 2.0数据类型之后可进行隐式转换。更多数据类型转换信息,请参见数据类型转换。

查询数据时,提示XXXtypeisnotenabled incurrentmode,如何解决?

您可以在Session级别执行set odps.sql.decimal.odps2=true;命令,打开2.0数据类型开关。

如何处理单字段大于8 MB的限制?

由于存储机制限制,MaxCompute表中单个字段的最大长度不能超过8 MB。对于超过8 MB的字段,建议您拆分成多个字段。具体的拆分逻辑您可以根据业务特性设计,保证每个字段不超过8
MB即可。

由于复杂结构的超大字段在数据开发和分析中会严重影响计算性能,因此建议根据数据仓库建设规范来设计您的数据架构,避免出现超大字段:

  • 具有复杂结构的原始数据,作为ODS层,最好以压缩的方式归档。
  • 定时(例如每天)对ODS层的增量数据做数据清洗,复杂字段拆分为多个简单字段,然后存储在CDM层的表中,便于统计和分析数据。

在执行MaxCompute SQL过程中,报错partitions exceeds the specified limit,如何解决?

  • 问题现象

    在执行MaxCompute SQL过程中,返回报错如下。

    FAILED: ODPS-0010000:System internal error - OTS filtering exception - Ots read range partitions exceeds the specified limit:10000:  tableName:xxxx , please check hive conf key
  • 产生原因
    MaxCompute单张表支持6万个分区,但是单次查询最多只支持1万个分区。该报错常见原因如下:

    • 原因一:分区未写分区条件。
    • 原因二:使用类似用户ID的字段作为分区字段,导致分区数量过多。
  • 解决措施
    • 原因一的解决措施:如果未写分区条件,补上分区条件即可。
    • 原因二的解决措施:如果分区列不合适,导致分区数量太多,请考虑更改分区列。

如何非交互式运行MaxCompute SQL?

在操作系统中,您可以通过Shell非交互式运行MaxCompute SQL:

  • 使用odps -f filename方式,读取并处理SQL文件。
    如果运行SQL,Filename文件的第一行是SQL表示已经进入SQL模式。命令示例如下。

    SQL
    
      select ... from table_name where xxx;                
  • 如果只运行一个SQL语句,您可以使用MaxCompute SQL中的sqltext方法,命令示例如下。
    ./odpscmd -e "select * from dual;"             

    您可以通过odps -help获得更多的信息。

SQL能将MaxCompute的配置转移到另外一个阿里云账号上吗?

您可以通过Package方法实现。更多Package授权信息,请参见MaxCompute多团队协同数据开发项目管理最佳实践。

如何将开发环境的表数据同步至生产环境的表中?

您可以通过MaxCompute客户端执行如下命令。

insert into project.table select * from project_dev.table;

如果没有生产环境中表的读写权限,需要完成账号授权。更多授权信息,请参见授权。

如何判断一个字段是否为空?

您可以通过MaxCompute SQL的运算符判断字段是否为空,更多运算符信息,请参见运算符。

是否可以通过DataWorks的Shell节点调取MaxCompute SQL?

不可以。Shell节点仅支持标准Shell语法,不支持交互性语法。如果作业较多,您可以使用ODPS SQL节点执行作业。更多ODPS SQL节点信息,请参见创建ODPS SQL节点。

如何在SQL中实现循环?

您可以通过DataWorks的do-while节点实现。

如何在SQL中调用赋值节点?

您可以通过DataWorks的for-each节点实现。

如何查看MaxCompute日执行的所有SQL?

您可以执行show p -all -limit ;命令查看MaxCompute项目下所有成员历史执行的SQL信息。更多查看实例信息,请参见查看实例信息。

如何查看SQL作业消耗的资源量?

您可以通过账单查看SQL作业消耗的资源量。更多查看账单实践信息,请参见MaxCompute账单分析最佳实践。

如何查看SQL执行费用?

您可以使用cost sql命令预估查询费用。更多命令信息,请参见计量预估。

SQL作业运行过慢,如何优化?

SQL作业可以通过Logview进行定位,定位方法请参见通过Logview诊断慢作业。

更多优化SQL作业信息,请参见计算优化最佳实践。

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

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

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

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

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

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

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

相关推荐

  • 阿里云RDS数据库使用pg_restore恢复逻辑备份文件数据-云淘科技

    本文介绍如何使用pg_restore命令将逻辑备份文件(.dump文件)中的数据恢复到RDS PostgreSQL实例或本地PostgreSQL数据库中。 说明 对于少量的数据,您可参考本文使用逻辑备份进行快速恢复,例如恢复某个表的数据。对于大量的数据,建议您使用全量物理备份来恢复数据到新的实例中,然后通过数据传输服务DTS将数据迁移回原有实例。 更多数据恢…

    2023年12月10日
  • 阿里云日志服务SLS使用数据实验室-云淘科技

    日志服务数据实验室为您提供各种场景的模拟日志数据及各种公共数据集数据,便于您熟悉日志服务的查询分析、查看报表等各种操作。本文介绍如何使用阿里云数据实验室。 前提条件 已开通日志服务。 首次登录日志服务控制台时,根据页面提示开通日志服务。 已完成云资源访问授权。 首次使用数据实验室时,在数据实验室的首页,单击前往授权完成云资源访问授权。 收费与限制目前数据实验…

    阿里云日志服务SLS 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云云原生大数据计算服务 MaxCompute优化器信息收集-云淘科技

    MaxCompute的优化器是基于代价的优化器,需要基于数据的一些特征(即元数据),例如行数、字符串平均长度,准确估算代价。本文为您介绍MaxCompute收集元数据的方法,为优化查询性能提供帮助。 背景信息 如果获取不到准确的元数据,优化器会对代价产生误判,生成不良的执行计划,因此元数据对于优化器至关重要。表的元数据主要是通过对其数据收集统计信息(Colu…

  • 阿里云日志服务SLS链路数据(Trace)-云淘科技

    链路数据(Trace)用于记录单次请求范围内的处理信息,其中包括服务调用和处理时长等数据。 一条链路数据对应一条调用链。在广义上,一个调用链代表一个事务或者流程在(分布式)系统中的执行过程。在OpenTracing标准中,调用链是多个Span组成的一个有向无环图(Directed Acyclic Graph,简称DAG),每一个Span代表调用链中被命名并计…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云云原生大数据计算服务 MaxComputeDAYOFWEEK-云淘科技

    返回日期的星期值。 命令格式 int dayofweek(datetime|timestamp|date|string ) 参数说明 date:必填。DATETIME、TIMESTAMP、DATE或STRING类型日期值,格式为yyyy-mm-dd、yyyy-mm-dd hh:mi:ss或yyyy-mm-dd hh:mi:ss.ff3。取值为STRING类型…

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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