我正在尝试从DWH SQL Server表中导入数据,该表使用Clustered Columnstore Index到kuduthrough中flume。但是,在我的自定义flume源从数据库中检索到一定数量的行之后,会发生此异常:
kudu
flume
SqlExceptionHelper:具有聚集的列存储索引的表不支持游标
我使用的是JDBC SQL Server驱动程序类型4,显然,它使用游标来迭代结果集。因此,我尝试将提取大小设置为查询所限制的数字,但没有任何变化。
如何停止JDBC驱动程序使用游标,从而将所有行导入kudu表中?
提前致谢。
尝试selectmethod=direct在连接属性中进行设置。资料来源:
selectmethod=direct
如果设置为direct(缺省值),则数据库服务器在响应查询时以单个响应的形式将完整结果集发送给驱动程序。 如果请求的结果集类型是仅转发结果集,则不会创建服务器端数据库游标 。通常,驱动程序不缓存响应。使用此方法,驱动程序必须在提交另一个查询之前处理对查询的整个响应。如果提交了另一个查询(例如,在同一连接上使用不同的语句),驱动程序将在提交第二个查询之前缓存对第一个查询的响应。通常,直接方法的性能优于游标方法。
当然,您需要将结果集定义为FORWARD_ONLY才能保证这一点。