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