Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jdbc 使用Impala的PreparedStatement:无法识别';附近的输入';_Jdbc_Hive_Prepared Statement_Impala - Fatal编程技术网

Jdbc 使用Impala的PreparedStatement:无法识别';附近的输入';

Jdbc 使用Impala的PreparedStatement:无法识别';附近的输入';,jdbc,hive,prepared-statement,impala,Jdbc,Hive,Prepared Statement,Impala,我在准备声明和黑斑羚方面遇到了一些麻烦。下面是我的示例代码: import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; public class TestPreparedSta

我在准备声明和黑斑羚方面遇到了一些麻烦。下面是我的示例代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;


public class TestPreparedStatement {

    public static void main(String[] args) {

        String connectionString = "jdbc:impala://[MY_IP]:[MY_PORT];UseNativeQuery=1;AuthMech=3";
        String username = "username";
        String password = "password";

        try {
            Class.forName("com.cloudera.impala.jdbc4.Driver");

            Connection _conn = DriverManager.getConnection(connectionString, username, password);

            String _sql = "select number_impala, string_impala from my_table where number_impala = ?";

            PreparedStatement pstm = _conn.prepareStatement(_sql);

            pstm.setObject(1, 1);

            pstm.executeQuery();

            pstm.close();

            _conn.close();

        } catch (SQLException | ClassNotFoundException ex) {
            Logger.getLogger(TestPreparedStatement.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
出于某种原因,我得到了一个ParseException,可能是关于?要在PreparedStatement中使用的查询中的符号。Stacktrace此处:

log4j:WARN No appenders could be found for logger (org.apache.thrift.transport.TSaslTransport).
log4j:WARN Please initialize the log4j system properly.
Abr 27, 2018 2:44:24 PM TestPreparedStatement main
SEVERE: null
java.sql.SQLException: [Simba][ImpalaJDBCDriver](500051) ERROR processing query/statement. Error Code: 40000, SQL state: TStatus(statusCode:ERROR_STATUS, infoMessages:[*org.apache.hive.service.cli.HiveSQLException:Error while compiling statement: FAILED: ParseException line 1:72 cannot recognize input near '?' '<EOF>' '<EOF>' in expression specification:28:27, org.apache.hive.service.cli.operation.Operation:toSQLException:Operation.java:400, org.apache.hive.service.cli.operation.SQLOperation:prepare:SQLOperation.java:187, org.apache.hive.service.cli.operation.SQLOperation:runInternal:SQLOperation.java:271, org.apache.hive.service.cli.operation.Operation:run:Operation.java:337, org.apache.hive.service.cli.session.HiveSessionImpl:executeStatementInternal:HiveSessionImpl.java:439, org.apache.hive.service.cli.session.HiveSessionImpl:executeStatement:HiveSessionImpl.java:405, sun.reflect.GeneratedMethodAccessor51:invoke::-1, sun.reflect.DelegatingMethodAccessorImpl:invoke:DelegatingMethodAccessorImpl.java:43, java.lang.reflect.Method:invoke:Method.java:497, org.apache.hive.service.cli.session.HiveSessionProxy:invoke:HiveSessionProxy.java:78, org.apache.hive.service.cli.session.HiveSessionProxy:access$000:HiveSessionProxy.java:36, org.apache.hive.service.cli.session.HiveSessionProxy$1:run:HiveSessionProxy.java:63, java.security.AccessController:doPrivileged:AccessController.java:-2, javax.security.auth.Subject:doAs:Subject.java:422, org.apache.hadoop.security.UserGroupInformation:doAs:UserGroupInformation.java:1917, org.apache.hive.service.cli.session.HiveSessionProxy:invoke:HiveSessionProxy.java:59, com.sun.proxy.$Proxy22:executeStatement::-1, org.apache.hive.service.cli.CLIService:executeStatement:CLIService.java:257, org.apache.hive.service.cli.thrift.ThriftCLIService:ExecuteStatement:ThriftCLIService.java:501, org.apache.hive.service.cli.thrift.TCLIService$Processor$ExecuteStatement:getResult:TCLIService.java:1313, org.apache.hive.service.cli.thrift.TCLIService$Processor$ExecuteStatement:getResult:TCLIService.java:1298, org.apache.thrift.ProcessFunction:process:ProcessFunction.java:39, org.apache.thrift.TBaseProcessor:process:TBaseProcessor.java:39, org.apache.hive.service.auth.TSetIpAddressProcessor:process:TSetIpAddressProcessor.java:56, org.apache.thrift.server.TThreadPoolServer$WorkerProcess:run:TThreadPoolServer.java:286, java.util.concurrent.ThreadPoolExecutor:runWorker:ThreadPoolExecutor.java:1142, java.util.concurrent.ThreadPoolExecutor$Worker:run:ThreadPoolExecutor.java:617, java.lang.Thread:run:Thread.java:745, *org.apache.hadoop.hive.ql.parse.ParseException:line 1:72 cannot recognize input near '?' '<EOF>' '<EOF>' in expression specification:32:5, org.apache.hadoop.hive.ql.parse.ParseDriver:parse:ParseDriver.java:204, org.apache.hadoop.hive.ql.parse.ParseDriver:parse:ParseDriver.java:166, org.apache.hadoop.hive.ql.Driver:compile:Driver.java:522, org.apache.hadoop.hive.ql.Driver:compileInternal:Driver.java:1356, org.apache.hadoop.hive.ql.Driver:compileAndRespond:Driver.java:1343, org.apache.hive.service.cli.operation.SQLOperation:prepare:SQLOperation.java:185], sqlState:42000, errorCode:40000, errorMessage:Error while compiling statement: FAILED: ParseException line 1:72 cannot recognize input near '?' '<EOF>' '<EOF>' in expression specification), Query: select number_impala, string_impala from my_table where number_impala = ?.
    at com.cloudera.impala.hivecommon.api.HS2Client.executeStatementInternal(HS2Client.java:832)
    at com.cloudera.impala.hivecommon.api.HS2Client.executeStatement(HS2Client.java:287)
    at com.cloudera.impala.hivecommon.dataengine.HiveJDBCNativeQueryExecutor.executeQuery(HiveJDBCNativeQueryExecutor.java:504)
    at com.cloudera.impala.hivecommon.dataengine.HiveJDBCNativeQueryExecutor.<init>(HiveJDBCNativeQueryExecutor.java:244)
    at com.cloudera.impala.hivecommon.dataengine.HiveJDBCDataEngine.prepare(HiveJDBCDataEngine.java:234)
    at com.cloudera.impala.jdbc.common.SPreparedStatement.<init>(SPreparedStatement.java:285)
    at com.cloudera.impala.jdbc.jdbc4.S4PreparedStatement.<init>(S4PreparedStatement.java:106)
    at com.cloudera.impala.jdbc.jdbc4.JDBC4ObjectFactory.createPreparedStatement(JDBC4ObjectFactory.java:167)
    at com.cloudera.impala.hivecommon.core.jdbc4.HiveJDBC4ObjectFactory.createPreparedStatement(HiveJDBC4ObjectFactory.java:118)
    at com.cloudera.impala.jdbc.common.SConnection.prepareStatement(SConnection.java:1143)
Caused by: com.cloudera.impala.support.exceptions.GeneralException: [Simba][ImpalaJDBCDriver](500051) ERROR processing query/statement. Error Code: 40000, SQL state: TStatus(statusCode:ERROR_STATUS, infoMessages:[*org.apache.hive.service.cli.HiveSQLException:Error while compiling statement: FAILED: ParseException line 1:72 cannot recognize input near '?' '<EOF>' '<EOF>' in expression specification:28:27, org.apache.hive.service.cli.operation.Operation:toSQLException:Operation.java:400, org.apache.hive.service.cli.operation.SQLOperation:prepare:SQLOperation.java:187, org.apache.hive.service.cli.operation.SQLOperation:runInternal:SQLOperation.java:271, org.apache.hive.service.cli.operation.Operation:run:Operation.java:337, org.apache.hive.service.cli.session.HiveSessionImpl:executeStatementInternal:HiveSessionImpl.java:439, org.apache.hive.service.cli.session.HiveSessionImpl:executeStatement:HiveSessionImpl.java:405, sun.reflect.GeneratedMethodAccessor51:invoke::-1, sun.reflect.DelegatingMethodAccessorImpl:invoke:DelegatingMethodAccessorImpl.java:43, java.lang.reflect.Method:invoke:Method.java:497, org.apache.hive.service.cli.session.HiveSessionProxy:invoke:HiveSessionProxy.java:78, org.apache.hive.service.cli.session.HiveSessionProxy:access$000:HiveSessionProxy.java:36, org.apache.hive.service.cli.session.HiveSessionProxy$1:run:HiveSessionProxy.java:63, java.security.AccessController:doPrivileged:AccessController.java:-2, javax.security.auth.Subject:doAs:Subject.java:422, org.apache.hadoop.security.UserGroupInformation:doAs:UserGroupInformation.java:1917, org.apache.hive.service.cli.session.HiveSessionProxy:invoke:HiveSessionProxy.java:59, com.sun.proxy.$Proxy22:executeStatement::-1, org.apache.hive.service.cli.CLIService:executeStatement:CLIService.java:257, org.apache.hive.service.cli.thrift.ThriftCLIService:ExecuteStatement:ThriftCLIService.java:501, org.apache.hive.service.cli.thrift.TCLIService$Processor$ExecuteStatement:getResult:TCLIService.java:1313, org.apache.hive.service.cli.thrift.TCLIService$Processor$ExecuteStatement:getResult:TCLIService.java:1298, org.apache.thrift.ProcessFunction:process:ProcessFunction.java:39, org.apache.thrift.TBaseProcessor:process:TBaseProcessor.java:39, org.apache.hive.service.auth.TSetIpAddressProcessor:process:TSetIpAddressProcessor.java:56, org.apache.thrift.server.TThreadPoolServer$WorkerProcess:run:TThreadPoolServer.java:286, java.util.concurrent.ThreadPoolExecutor:runWorker:ThreadPoolExecutor.java:1142, java.util.concurrent.ThreadPoolExecutor$Worker:run:ThreadPoolExecutor.java:617, java.lang.Thread:run:Thread.java:745, *org.apache.hadoop.hive.ql.parse.ParseException:line 1:72 cannot recognize input near '?' '<EOF>' '<EOF>' in expression specification:32:5, org.apache.hadoop.hive.ql.parse.ParseDriver:parse:ParseDriver.java:204, org.apache.hadoop.hive.ql.parse.ParseDriver:parse:ParseDriver.java:166, org.apache.hadoop.hive.ql.Driver:compile:Driver.java:522, org.apache.hadoop.hive.ql.Driver:compileInternal:Driver.java:1356, org.apache.hadoop.hive.ql.Driver:compileAndRespond:Driver.java:1343, org.apache.hive.service.cli.operation.SQLOperation:prepare:SQLOperation.java:185], sqlState:42000, errorCode:40000, errorMessage:Error while compiling statement: FAILED: ParseException line 1:72 cannot recognize input near '?' '<EOF>' '<EOF>' in expression specification), Query: select number_impala, string_impala from my_table where number_impala = ?.
    ... 10 more
log4j:WARN找不到记录器(org.apache.thrift.transport.TSaslTransport)的附加程序。
log4j:警告请正确初始化log4j系统。
2018年2月27日下午2:44:24测试准备的主要报表
严重:空
java.sql.SQLException:[Simba][ImpalaJDBCDriver](500051)处理查询/语句时出错。错误代码:40000,SQL状态:TStatus(状态代码:错误状态,信息消息:[*org.apache.hive.service.cli.HiveSQLException:编译语句时出错:失败:ParseException行1:72无法识别表达式规范28:27,org.apache.hive.service.cli.operation.operation:toSQLException:operation.java:400,org.apache.hive.service.cli.operation.SQLOperation:prepare:SQLOperation.java:187中“?””附近的输入,org.apache.hive.service.cli.operation.SQLOperation:runInternal:SQLOperation.java:271,org.apache.hive.service.cli.operation:run:operation.java:337,org.apache.hive.service.cli.session.HiveSessionImpl:executeStatementInternal:HiveSessionImpl.java:439,org.apache.hive.service.cli.session.HiveSessionImpl:executeStatement:hivesiml.java:405,sun.reflect.GeneratedMethodAccessor51:invoke::-1,sun.reflect.DelegatingMethodAccessorImpl:invoke:DelegatingMethodAccessorImpl.java:43,java.lang.reflect.Method:invoke:Method.java:497,org.apache.service.cli.session.HiveSessionProxy:invoke:HiveSessionProxy:78,org.apache.HiveSessionProxy:access$000:HiveSSessionProxy.java:36,org.apache.hive.service.cli.session.HiveSessionProxy$1:run:HiveSessionProxy.java:63,java.security.AccessController:doPrivileged:AccessController.java:-2,javax.security.auth.Subject:doAs:Subject.java:422,org.apache.hadoop.security.UserGroupInformation:doAs:UserGroupInformation.java:1917,org.apache.hive.service.cli.session.HiveSessionProxy:invoke:HiveSessionProxy.java:59,com.sun.proxy.$Proxy22:executeStatement::-1,org.apache.hive.service.cli.CLIService:executeStatement:CLIService.java:257,org.apache.hive.service.clift.ThriftCLIService:executeStatement:ThriftCLIService.java:501,org.apache.hive.service.clift$Processor$executeStatement$executeStatement:GetResultt:TCLIService.java:1313,org.apache.hive.service.cli.thrift.TCLIService$Processor$ExecuteStatement:getResult:TCLIService.java:1298,org.apache.thrift.ProcessFunction:process:process:process:process:TBaseProcessor.java:39,org.apache.hive.service.auth.TSetIpAddressProcessor:process:TSetIpAddressProcessor:tseipaddressprocessor.java:56,org.apache.thrift.server.TThreadPoolServer$Worker进程:run:TThreadPoolServer.java:286,java.util.concurrent.ThreadPoolExecutor:runWorker:ThreadPoolExecutor.java:run:ThreadPoolExecutor.java:617,java.lang.Thread:run:Thread.java:745,*org.apache.hadoop.hive.ql.parse.ParseException:1行:72无法识别表达式规范:32:5,org.apache.hadoop.hive.ql.parse.ParseDriver:parse:ParseDriver.java:204,org.apache.hadoop.hive.ql.parse.ParseDriver:parse:ParseDriver.java:166,org.apache.hadoop.hive.ql.Driver:compile:Driver.java:522,org.apache.hadoop.hive.ql.Driver:compileInternal:Driver.java:1356,org.apache.hadoop.hive.ql.Driver:compileAndRespond:Driver.java:1343,org.apache.hive.service.cli.operation.SQLOperation:prepare:SQLOperation.java:185],sqlState:42000,错误代码:40000,错误消息:编译语句时出错:失败:ParseException行1:72无法识别表达式规范中“?””附近的输入),查询:从my_表中选择number_impala,string_impala,其中number_impala=?。
位于com.cloudera.impala.hivecommon.api.HS2Client.executeStatementInternal(HS2Client.java:832)
位于com.cloudera.impala.hivecommon.api.HS2Client.executeStatement(HS2Client.java:287)
位于com.cloudera.impala.hivecommon.dataengine.hivejdbnativequeryexecutor.executeQuery(hivejdbnativequeryexecutor.java:504)
位于com.cloudera.impala.hivecommon.dataengine.hivejdbnativequeryexecutor。(hivejdbnativequeryexecutor.java:244)
位于com.cloudera.impala.hivecommon.dataengine.HiveJDBCDataEngine.prepare(HiveJDBCDataEngine.java:234)
位于com.cloudera.impala.jdbc.common.SPreparedStatement.(SPreparedStatement.java:285)
位于com.cloudera.impala.jdbc.jdbc4.S4PreparedStatement.(S4PreparedStatement.java:106)
位于com.cloudera.impala.jdbc.jdbc4.JDBC4ObjectFactory.createPreparedStatement(JDBC4ObjectFactory.java:167)
位于com.cloudera.impala.hivecommon.core.jdbc4.HiveJDBC4ObjectFactory.createPreparedStatement(HiveJDBC4ObjectFactory.java:118)
在com.cloudera.impala.jdbc.common.SConnection.prepareStatement上(SConnection.java:1143)
原因:com.cloudera.impala.support.exceptions.GeneralException:[Simba][ImpalaJDBCDriver](500051)处理查询/语句时出错。错误代码:40000,SQL状态:TStatus(状态代码:ERROR\u STATUS,信息消息:[*org.apache.hive.service.cli.HiveSQLException:编译语句时出错:失败:ParseException行1:72无法识别表达式规范28:27,org.apache.hive.service.cli.operation.operation:toSQLException:operation.java:400,org.apache.hive.service.cli.operation.SQLOperation:prepare:SQLOperation.java:187中“?””附近的输入,org.apache.hive.service.cli.operation.SQLOperation:runInternal:SQLOperation.java:271,org.apache.hive.service.cli.operation:run:operation.java:337,org.apache.hive.service.cli.session.HiveSessionImpl:executeStatementInternal:HiveSessionImpl.java:439,org.apache.hive.service.cli.session.HiveSessionImpl:executeStatement:hivesiml.java:405,sun.reflect.GeneratedMethodAccessor 51:invoke::-1,sun.reflect.DelegatingMethodAccessorImpl:invoke:DelegatingMethodAccessorImpl.java:43,
UseNativeQuery=1