Closed yamipis closed 6 years ago
#可以这样获取行数
from odps.df import DataFrame
df = DataFrame(table)
df.count()
补充下:
非交互式环境,要触发 execute
df = o.get_table('table_name').to_df()
df.count().execute()
是我的表太大,还是分区的数量太多?(专有云)报错如下: ODPS-0140181:Sql plan exception Could not generate job json. instance count exceeds limit 99999: task‘ M1 Stg1’. instance count '20949' 我不知道这个执行的过程是不是直接把所有分区的值算在一起,返回的结果提示这个执行的任务数超了,没法反馈正确的结果。
所有分区的值在一起,超过了能起的 mapper 的个数。
可以设置:
options.sql.settings = { 'odps.sql.mapper.split.size': 256 }
这样不合适吧?等于还是生成个MR任务运行,不能直接读ots的元数据?
Table 或者 Partition 的元数据只会记录物理存储大小,没有行数。
这些超出了 pyodps 范畴,后续还有问题请开工单咨询。
请问下,现在依然是没有办法直接获取到整个表的行数吗?我用了前面转DataFrame的方法,依然会报错说要提供partition
是我的表太大,还是分区的数量太多?(专有云)报错如下: ODPS-0140181:Sql plan exception Could not generate job json. instance count exceeds limit 99999: task‘ M1 Stg1’. instance count '20949' 我不知道这个执行的过程是不是直接把所有分区的值算在一起,返回的结果提示这个执行的任务数超了,没法反馈正确的结果。
ds = MAX_PT()
可能就是这个的原因
就是要起得mapper数量大于集群的机器数量