首页 > 解决方案 > Microsoft Hive ODBC 驱动程序在 .Net 核心应用程序中失败

问题描述

我正在使用 Microsoft Hive ODBC 驱动程序 (v2.6.7) 从我的 .net 核心应用程序 (netcoreapp3.1) 的 Windows Azure HDInsight 服务中获取数据。经过数百次成功查询后,我的应用程序崩溃了,没有任何异常引发退出代码 -1,073,740,791 (0xffffffff)。在 Windows 事件日志中,我看到以下错误:

Faulting application name: dotnet.exe, version: 3.100.119.60804, time stamp: 0x5dedc132
Faulting module name: HiveODBC64.dll, version: 2.6.7.1007, time stamp: 0x5d6978a4
Exception code: 0xc0000409
Fault offset: 0x0000000000c86dfc
Faulting process id: 0x4fb8
Faulting application start time: 0x01d68683f7412b76
Faulting application path: C:\Program Files\dotnet\dotnet.exe
Faulting module path: C:\Program Files\Microsoft Hive ODBC Driver\lib\HiveODBC64.dll
Report Id: b7354942-fdf5-4bdd-bab4-f26418c83f04
Faulting package full name: 
Faulting package-relative application ID: 

在 ODBC 驱动程序日志中,我看到:

Sep 09 11:49:45.082 DEBUG 9252 HardyTCLIServiceUtils::ThrowOnNotSuccess: Backend returned non-SUCCESS status for operation GetColumns: 
    TStatus.statusCode=ERROR_STATUS
    TStatus.infoMessages="*java.nio.BufferUnderflowException:null:35:34""java.nio.Buffer:nextGetIndex:Buffer.java:506""java.nio.HeapByteBuffer:getLong:HeapByteBuffer.java:425""org.apache.hive.service.cli.HandleIdentifier:<init>:HandleIdentifier.java:46""org.apache.hive.service.cli.Handle:<init>:Handle.java:38""org.apache.hive.service.cli.SessionHandle:<init>:SessionHandle.java:45""org.apache.hive.service.cli.SessionHandle:<init>:SessionHandle.java:41""org.apache.hive.service.cli.thrift.ThriftCLIService:GetColumns:ThriftCLIService.java:600""org.apache.hive.service.cli.thrift.TCLIService$Processor$GetColumns:getResult:TCLIService.java:1497""org.apache.hive.service.cli.thrift.TCLIService$Processor$GetColumns:getResult:TCLIService.java:1482""org.apache.thrift.ProcessFunction:process:ProcessFunction.java:39""org.apache.thrift.TBaseProcessor:process:TBaseProcessor.java:39""org.apache.thrift.server.TServlet:doPost:TServlet.java:83""org.apache.hive.service.cli.thrift.ThriftHttpServlet:doPost:ThriftHttpServlet.java:206""javax.servlet.http.HttpServlet:service:HttpServlet.java:727""javax.servlet.http.HttpServlet:service:HttpServlet.java:820""org.eclipse.jetty.servlet.ServletHolder:handle:ServletHolder.java:565""org.eclipse.jetty.servlet.ServletHandler:doHandle:ServletHandler.java:479""org.eclipse.jetty.server.session.SessionHandler:doHandle:SessionHandler.java:225""org.eclipse.jetty.server.handler.ContextHandler:doHandle:ContextHandler.java:1031""org.eclipse.jetty.servlet.ServletHandler:doScope:ServletHandler.java:406""org.eclipse.jetty.server.session.SessionHandler:doScope:SessionHandler.java:186""org.eclipse.jetty.server.handler.ContextHandler:doScope:ContextHandler.java:965""org.eclipse.jetty.server.handler.ScopedHandler:handle:ScopedHandler.java:117""org.eclipse.jetty.server.handler.HandlerWrapper:handle:HandlerWrapper.java:111""org.eclipse.jetty.server.Server:handle:Server.java:345""org.eclipse.jetty.server.AbstractHttpConnection:handleRequest:AbstractHttpConnection.java:449""org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler:content:AbstractHttpConnection.java:925""org.eclipse.jetty.http.HttpParser:parseNext:HttpParser.java:857""org.eclipse.jetty.http.HttpParser:parseAvailable:HttpParser.java:235""org.eclipse.jetty.server.AsyncHttpConnection:handle:AsyncHttpConnection.java:76""org.eclipse.jetty.io.nio.SelectChannelEndPoint:handle:SelectChannelEndPoint.java:609""org.eclipse.jetty.io.nio.SelectChannelEndPoint$1:run:SelectChannelEndPoint.java:45""java.util.concurrent.ThreadPoolExecutor:runWorker:ThreadPoolExecutor.java:1149""java.util.concurrent.ThreadPoolExecutor$Worker:run:ThreadPoolExecutor.java:624""java.lang.Thread:run:Thread.java:748"
    TStatus.sqlState=
    TStatus.errorCode=0
    TStatus.errorMessage=""
    TStatus.__isset.errorCode: false
    TStatus.__isset.errorMessage: false
    TStatus.__isset.infoMessages: true
    TStatus.__isset.sqlState: false
Sep 09 11:49:45.082 TRACE 9252 HardyTable::~HardyTable: +++++ enter +++++
Sep 09 11:49:45.082 TRACE 9252 HardyResultSetBase::~HardyResultSetBase: +++++ enter +++++
Sep 09 11:49:45.082 INFO  9252 HardyDataEngine::Prepare: Exception caught while parsing statement: [Microsoft][Hardy] (61) Server returned error with no error message during operation: GetColumns 
    TStatus.statusCode=ERROR_STATUS
    TStatus.infoMessages="*java.nio.BufferUnderflowException:null:35:34""java.nio.Buffer:nextGetIndex:Buffer.java:506""java.nio.HeapByteBuffer:getLong:HeapByteBuffer.java:425""org.apache.hive.service.cli.HandleIdentifier:<init>:HandleIdentifier.java:46""org.apache.hive.service.cli.Handle:<init>:Handle.java:38""org.apache.hive.service.cli.SessionHandle:<init>:SessionHandle.java:45""org.apache.hive.service.cli.SessionHandle:<init>:SessionHandle.java:41""org.apache.hive.service.cli.thrift.ThriftCLIService:GetColumns:ThriftCLIService.java:600""org.apache.hive.service.cli.thrift.TCLIService$Processor$GetColumns:getResult:TCLIService.java:1497""org.apache.hive.service.cli.thrift.TCLIService$Processor$GetColumns:getResult:TCLIService.java:1482""org.apache.thrift.ProcessFunction:process:ProcessFunction.java:39""org.apache.thrift.TBaseProcessor:process:TBaseProcessor.java:39""org.apache.thrift.server.TServlet:doPost:TServlet.java:83""org.apache.hive.service.cli.thrift.ThriftHttpServlet:doPost:ThriftHttpServlet.java:206""javax.servlet.http.HttpServlet:service:HttpServlet.java:727""javax.servlet.http.HttpServlet:service:HttpServlet.java:820""org.eclipse.jetty.servlet.ServletHolder:handle:ServletHolder.java:565""org.eclipse.jetty.servlet.ServletHandler:doHandle:ServletHandler.java:479""org.eclipse.jetty.server.session.SessionHandler:doHandle:SessionHandler.java:225""org.eclipse.jetty.server.handler.ContextHandler:doHandle:ContextHandler.java:1031""org.eclipse.jetty.servlet.ServletHandler:doScope:ServletHandler.java:406""org.eclipse.jetty.server.session.SessionHandler:doScope:SessionHandler.java:186""org.eclipse.jetty.server.handler.ContextHandler:doScope:ContextHandler.java:965""org.eclipse.jetty.server.handler.ScopedHandler:handle:ScopedHandler.java:117""org.eclipse.jetty.server.handler.HandlerWrapper:handle:HandlerWrapper.java:111""org.eclipse.jetty.server.Server:handle:Server.java:345""org.eclipse.jetty.server.AbstractHttpConnection:handleRequest:AbstractHttpConnection.java:449""org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler:content:AbstractHttpConnection.java:925""org.eclipse.jetty.http.HttpParser:parseNext:HttpParser.java:857""org.eclipse.jetty.http.HttpParser:parseAvailable:HttpParser.java:235""org.eclipse.jetty.server.AsyncHttpConnection:handle:AsyncHttpConnection.java:76""org.eclipse.jetty.io.nio.SelectChannelEndPoint:handle:SelectChannelEndPoint.java:609""org.eclipse.jetty.io.nio.SelectChannelEndPoint$1:run:SelectChannelEndPoint.java:45""java.util.concurrent.ThreadPoolExecutor:runWorker:ThreadPoolExecutor.java:1149""java.util.concurrent.ThreadPoolExecutor$Worker:run:ThreadPoolExecutor.java:624""java.lang.Thread:run:Thread.java:748"
    TStatus.sqlState=
    TStatus.errorCode=0
    TStatus.errorMessage=""
    TStatus.__isset.errorCode: false
    TStatus.__isset.errorMessage: false
    TStatus.__isset.infoMessages: true
    TStatus.__isset.sqlState: false

有什么方法可以避免这个错误吗?或者至少要捕获我的 dotnet 应用程序中的错误?

标签: .net-corehiveodbc

解决方案


推荐阅读