aliyun / aliyun-odps-java-sdk

ODPS SDK for Java Developers
Other
89 stars 50 forks source link

no more field nodes for xxxx #75

Open hubgeter opened 1 day ago

hubgeter commented 1 day ago

image image

我基于tunnel api 0.45.2-public 开发了一些东西,目前有时候 在专有云maxcompute 3.18.1上遇到这样的报错 经过排查 可能跟新增加了字段相关,(读别的字段没有遇到这个问题。) 请问有没有人遇到类似的问题。

dingxin-tech commented 1 day ago

可以给出这个问题的复现流程吗?

hubgeter commented 1 day ago

@dingxin-tech 感谢您能关注到这个问题。 sorry , 目前我在公有云的环境上没有复现出来这个问题, 由于使用我这个程序的用户是在专有云上,我们也没有专有云的环境,所以我给不出来一个具体的复现流程。只能说是可能跟新增加了字段相关。

hubgeter commented 1 day ago

如果有遇到类似的问题,可以告诉我,作为排查的一个思路 thanks

hubgeter commented 17 hours ago

环境: maxcompute 专有云 3.18.1 tunnel api :0.45.2-public 和 0.45.6-public 都有尝试,都有问题 目前可以确定:确实是增加字段导致这个问题的(分区表和非分区表都会有这个问题) alter table xxx add column new_column xxxx

代码上的大致实现:

TableTunnel.DownloadSession session;
if (partitionSpec != null) {
  tableSession = tunnel.getDownloadSession(project, table, partitionSpec, null);
  totalRows = tableSession.getRecordCount();
} else {
    tableSession = tunnel.getDownloadSession(project, table, null);
    totalRows = tableSession.getRecordCount();
}
arrowAllocator = new RootAllocator(Integer.MAX_VALUE);
curReader = tableSession.openArrowRecordReader(start, totalRows, pushDownColumns, arrowAllocator);
// pushDownColumns 中包含有new_column 的时候会有问题,不包含则没问题。
batch = curReader.read();
dingxin-tech commented 13 hours ago

根据上述信息,场景应该是: 在给表新增列之后,download session init 得到的 schema 有新的列,而读取的时候拿到的 arrow batch 里面没有这个新增列导致的。

可能是老版本 tunnel server 的 bug,我在公共云没有发现这个问题

hubgeter commented 13 hours ago

意思是服务端的bug对吧,也就是升级本地的这个tunnel api 版本是没啥用的。 我在公有云上也没发现这个问题。

根据上述信息,场景应该是: 在给表新增列之后,download session init 得到的 schema 有新的列,而读取的时候拿到的 arrow batch 里面没有这个新增列导致的。

可能是老版本 tunnel server 的 bug,我在公共云没有发现这个问题