本文是基于本人对MaxCompute产品的学习进度,再结合开发者社区里面的一些问题,进而整理成文。希望对大家有所帮助。
问题一、在 MaxCompute SQL执行过程中,报错Table xx has n columns, but query has m columns如何处理?
MaxCompute SQL使用INSERT INTO/OVERWRITE插入数据时,需要保证SELECT查询出 来的字段和插入的表的字段匹配,匹配内容包括顺序、字段类型,总的字段数量。目前 MaxCompute不支持插入表的指定字段,其他字段为NULL或者其他默认值的情况,您可以 在SELECT的时候设置成NULL,例如SELECT ‘a’,NULL FROM XX。
问题二、MaxCompute 中使用什么方法可以实现相同字段连接,将group by产生的同一个分组中的值连接起来,返回一个字符串结果。类似MySql中的group_concat()函数?
MaxCompute可以使用WM_CONCAT函数来实现相同字段连接。具体函数说明可参考:
https://help.aliyun.com/document_detail/48975.html
问题三、如何在MaxCompute Java SDK上使用Logview排错?
MaxCompute Java SDK提供了Logview接口 i = SQLTask.run(odps, sql); String logview = odps.logview().generateLogView(i, 7 * 24);
问题四、如何进行增量数据同步到MaxCompute?
可以尝试两种方式,一种不变的数据进行增量同步,一种是会变的数据进行增量同步(不推荐使用此方式,只有如不支持Delete语句)。
问题五、MaxCommpute中,如何修改表的Hash Clustering属性?
增加表的Hash Clustering属性语句如下:
ALTER TABLE table_name [CLUSTERED BY (col_name [, col_name, ...]) [SORTED BY (col_name [ASC | DESC] [, col_name [ASC | DESC] ...])] INTO number_of_buckets BUCKETS]
去除表的Hash Clustering属性的语法格式如下:
ALTER TABLE table_name NOT CLUSTERED;
问题六、Tunnel上传数据的时候报错信息如下:You cannot complete the specified operation under the current upload or download status
错误原因:Session过期或者已经Commit过,需要重新创建Session上传。Tunnel上传时每个Session的生命周期是一天,如果源表数据太大,导致Session超时任务失败时,建议将源表拆分成2个任务执行。
问题七、如何使用Clone table实现同region不同账号之间的MaxCompute的数据迁移?
使用Clone table进行数据迁移操作,命令格式为CLONE TABLE <[src_project_name.]src_table_name> [PARTITION(spec), ...]TO <[dest_project_name.]desc_table_name> [IF EXISTS (OVERWRITE | IGNORE)] ;
可参考文章:https://developer.aliyun.com/article/748158
问题八、MaxCompute Python UDF如何开启Python 3?
在执行Python 3 UDF的SQL语句前增加set odps.sql.python.version=cp37;语句一起执行,即可开启Python 3。
问题九、MaxCompute中如何禁止/恢复生命周期功能?
可使用禁止/恢复生命周期SQL来设置。具体语法如下:
ALTER TABLE table_name [partition_spec] ENABLE|DISABLE LIFECYCLE;
问题十、MaxCommpute中,如何查看指定的表或者分区是否存在?
可使用使用函数TABLE_EXISTS,查询指定的表是否存在。
使用函数PARTITION_EXISTS,查询指定的分区是否存在。
具体函数说明可参考:
https://help.aliyun.com/document_detail/48976.html