2017-10-26 3 views
3

は、私がJDBCSpringBootを経由してリモートクエリツールを実装WHEREでは動作しません、それは簡単なSQLで動作します:JDBCは、句

curl http://192.168.x.x:XXXX/etl/sql?sql=select%20room_id,name%20from%20dim.dim_room%20limit%2010 

GET要求で送信SQL

select room_id,name from dim.dim_room limit 10 

これは期待される結果を返しますが、where句を追加すると:

要求で送信

SQL

select room_id,name from dim.dim_room where room_id = 19569 

それは(SQLは、私のHive2で正しく実行することができます)例外を返します:

java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 
     at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:296) 
     at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:392) 
     at org.apache.hive.jdbc.HivePreparedStatement.executeQuery(HivePreparedStatement.java:109) 
     at com.lz.model.ETLEntity.query(ETLEntity.java:59) 
     at com.lz.service.impl.ETLServiceImpl.executeShellScript(ETLServiceImpl.java:19) 
     at com.lz.web.action.etl.ETLController.identify(ETLController.java:36) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) 
     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) 
     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) 
     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
     at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) 
     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
     at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
     at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
     at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 
     at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) 
     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
     at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455) 
     at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
     at java.lang.Thread.run(Thread.java:745) 

なぜこれが起こる可能性があり、それを解決する方法?ログに表示


SQLは正しいです: enter image description here

+0

@AxelHはい、タイプを

回答をLinuxとHadoopのアカウントが必要、仕事をし、マップを開始する必要がありますroom_id'は 'int'です。 – SuperDelta

+0

room_idが有効な列名で、型が整数であることを確認してください。ほとんどの場合、これはwhere句の列がStringを期待しているのに整数を渡しているためです。またはその逆の場合 –

+0

@Optimuskck thx、あなたの返信は「room_id」のデータ型は整数です。 – SuperDelta

答えて

2

あなたは壮大サーバー

たちができるようにアクセスすることを、接続を取得するためにDriverManager.getConnection(String, String, String)を使用して、有効なユーザ名とパスワードを渡す必要がありますthat pageを参照してください。ハイブは簡単なクエリではユーザーIDが必要ありませんが、条件を追加すると、条件には識別が必要な処理が必要になります

SELECT * FROM <table>を実行してもジョブを開始する必要はないため、SquirreLはJDBCを使用してこの問合せを問題なく実行できます。しかし、実行するためのSELECT * FROM <table> WHERE <condition>のようなクエリでは、削減/さらにマニッシュ・グプタによって、クラスタ内の `の

+0

はい私は同じものを書くつもりでした:) –

+0

@AxelHそれです!この問題は解決しました! Thxあなたの助けに! – SuperDelta

+0

@SanchitPatiyal Thxあなたの助けをすべて同じ男! – SuperDelta