kyuubi icon indicating copy to clipboard operation
kyuubi copied to clipboard

[Bug] execute scala code in Kyuubi

Open zhaohehuhu opened this issue 2 years ago • 8 comments

Code of Conduct

Search before asking

  • [X] I have searched in the issues and found no similar issues.

Describe the bug

I got three tasks implemented by Scala. Some variables were defined and used like the way that I'm using Spark. I fired three threads to run these tasks in parallel. However, one of tasks got failed because of NoSuchMethodError(meetingRevisedOutputSql is a variable I defined). When I run these task one by one, all tasks are successful.

Affects Version(s)

1.5.0

Kyuubi Server Log Output

 org.apache.kyuubi.shade.org.apache.hive.service.cli.HiveSQLException: Error operating EXECUTE_STATEMENT: org.apache.kyuubi.KyuubiSQLException: Interpret error:
java.lang.NoSuchMethodError: meetingRevisedOutputSql()Ljava/lang/String;
  at .lzycompute(<console>:13)
  at .$print(<console>:6)
  at $print(<console>)
  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 scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:747)
  at scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:1020)
  at scala.tools.nsc.interpreter.IMain.$anonfun$interpret$1(IMain.scala:568)
  at scala.reflect.internal.util.ScalaClassLoader.asContext(ScalaClassLoader.scala:36)
  at scala.reflect.internal.util.ScalaClassLoader.asContext$(ScalaClassLoader.scala:116)
  at scala.reflect.internal.util.AbstractFileClassLoader.asContext(AbstractFileClassLoader.scala:41)
  at scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:567)
  at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:594)
  at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:564)
  at org.apache.kyuubi.engine.spark.repl.KyuubiSparkILoop.$anonfun$interpretWithRedirectOutError$2(KyuubiSparkILoop.scala:104)
  at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
  at scala.Console$.withErr(Console.scala:196)
  at org.apache.kyuubi.engine.spark.repl.KyuubiSparkILoop.$anonfun$interpretWithRedirectOutError$1(KyuubiSparkILoop.scala:104)
  at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
  at scala.Console$.withOut(Console.scala:167)
  at org.apache.kyuubi.engine.spark.repl.KyuubiSparkILoop.interpretWithRedirectOutError(KyuubiSparkILoop.scala:103)
  at org.apache.kyuubi.engine.spark.operation.ExecuteScala.$anonfun$runInternal$1(ExecuteScala.scala:67)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  at org.apache.kyuubi.engine.spark.operation.SparkOperation.withLocalProperties(SparkOperation.scala:88)
  at org.apache.kyuubi.engine.spark.operation.ExecuteScala.runInternal(ExecuteScala.scala:60)
  at org.apache.kyuubi.operation.AbstractOperation.run(AbstractOperation.scala:133)
  at org.apache.kyuubi.session.AbstractSession.runOperation(AbstractSession.scala:93)
  at org.apache.kyuubi.engine.spark.session.SparkSessionImpl.runOperation(SparkSessionImpl.scala:66)
  at org.apache.kyuubi.session.AbstractSession.$anonfun$executeStatement$1(AbstractSession.scala:122)
  at org.apache.kyuubi.session.AbstractSession.withAcquireRelease(AbstractSession.scala:75)
  at org.apache.kyuubi.session.AbstractSession.executeStatement(AbstractSession.scala:119)
  at org.apache.kyuubi.service.AbstractBackendService.executeStatement(AbstractBackendService.scala:66)
  at org.apache.kyuubi.service.TFrontendService.ExecuteStatement(TFrontendService.scala:232)
  at org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1557)
  at org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1542)
  at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38)
  at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
  at org.apache.kyuubi.service.authentication.TSetIpAddressProcessor.process(TSetIpAddressProcessor.scala:36)
  at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:310)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
  at java.lang.Thread.run(Thread.java:750)
	at org.apache.kyuubi.KyuubiSQLException$.apply(KyuubiSQLException.scala:69)
	at org.apache.kyuubi.engine.spark.operation.ExecuteScala.$anonfun$runInternal$1(ExecuteScala.scala:80)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
	at org.apache.kyuubi.engine.spark.operation.SparkOperation.withLocalProperties(SparkOperation.scala:88)
	at org.apache.kyuubi.engine.spark.operation.ExecuteScala.runInternal(ExecuteScala.scala:60)
	at org.apache.kyuubi.operation.AbstractOperation.run(AbstractOperation.scala:133)
	at org.apache.kyuubi.session.AbstractSession.runOperation(AbstractSession.scala:93)
	at org.apache.kyuubi.engine.spark.session.SparkSessionImpl.runOperation(SparkSessionImpl.scala:66)
	at org.apache.kyuubi.session.AbstractSession.$anonfun$executeStatement$1(AbstractSession.scala:122)
	at org.apache.kyuubi.session.AbstractSession.withAcquireRelease(AbstractSession.scala:75)
	at org.apache.kyuubi.session.AbstractSession.executeStatement(AbstractSession.scala:119)
	at org.apache.kyuubi.service.AbstractBackendService.executeStatement(AbstractBackendService.scala:66)
	at org.apache.kyuubi.service.TFrontendService.ExecuteStatement(TFrontendService.scala:232)
	at org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1557)
	at org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1542)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.kyuubi.service.authentication.TSetIpAddressProcessor.process(TSetIpAddressProcessor.scala:36)
	at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:750)

	at org.apache.kyuubi.jdbc.hive.Utils.verifySuccess(Utils.java:259)
	at org.apache.kyuubi.jdbc.hive.Utils.verifySuccessWithInfo(Utils.java:245)
	at org.apache.kyuubi.jdbc.hive.KyuubiStatement.runAsyncOnServer(KyuubiStatement.java:327)
	at org.apache.kyuubi.jdbc.hive.KyuubiStatement.executeWithConfOverlay(KyuubiStatement.java:249)
	at org.apache.kyuubi.jdbc.hive.KyuubiStatement.executeScala(KyuubiStatement.java:498)
	at KyuubiUtilTestv2$1.run(KyuubiUtilTestv2.java:251)
	at java.lang.Thread.run(Thread.java:750)

Kyuubi Engine Log Output

No response

Kyuubi Server Configurations

No response

Kyuubi Engine Configurations

No response

Additional context

No response

Are you willing to submit PR?

  • [x] Yes I am willing to submit a PR!

zhaohehuhu avatar Aug 22 '22 07:08 zhaohehuhu

Hi @turboFei, could you please help on it?

zhaohehuhu avatar Aug 22 '22 07:08 zhaohehuhu

Hello @luoyedeyi, Thanks for finding the time to report the issue! We really appreciate the community's efforts to improve Apache Kyuubi (Incubating).

github-actions[bot] avatar Aug 22 '22 07:08 github-actions[bot]

also cc @yaooqinn

turboFei avatar Aug 22 '22 14:08 turboFei

I fired three threads to run these tasks in parallel.

Are you using the same session for all threads?

wForget avatar Aug 23 '22 01:08 wForget

seems the repl was not shared across sessions.

turboFei avatar Aug 23 '22 01:08 turboFei

different connection and session for each thread.

zhaohehuhu avatar Aug 23 '22 02:08 zhaohehuhu

got another exception;

java.lang.NoSuchMethodError: .value()Lorg/apache/kyuubi/engine/spark/repl/DataFrameHolder;
  ... 55 elided
	at org.apache.kyuubi.KyuubiSQLException$.apply(KyuubiSQLException.scala:69)
	at org.apache.kyuubi.engine.spark.operation.ExecuteScala.$anonfun$runInternal$1(ExecuteScala.scala:80)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
	at org.apache.kyuubi.engine.spark.operation.SparkOperation.withLocalProperties(SparkOperation.scala:88)
	at org.apache.kyuubi.engine.spark.operation.ExecuteScala.runInternal(ExecuteScala.scala:60)
	at org.apache.kyuubi.operation.AbstractOperation.run(AbstractOperation.scala:133)
	at org.apache.kyuubi.session.AbstractSession.runOperation(AbstractSession.scala:93)
	at org.apache.kyuubi.engine.spark.session.SparkSessionImpl.runOperation(SparkSessionImpl.scala:66)
	at org.apache.kyuubi.session.AbstractSession.$anonfun$executeStatement$1(AbstractSession.scala:122)
	at org.apache.kyuubi.session.AbstractSession.withAcquireRelease(AbstractSession.scala:75)
	at org.apache.kyuubi.session.AbstractSession.executeStatement(AbstractSession.scala:119)
	at org.apache.kyuubi.service.AbstractBackendService.executeStatement(AbstractBackendService.scala:66)
	at org.apache.kyuubi.service.TFrontendService.ExecuteStatement(TFrontendService.scala:232)
	at org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1557)
	at org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1542)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.kyuubi.service.authentication.TSetIpAddressProcessor.process(TSetIpAddressProcessor.scala:36)
	at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:750)
	at org.apache.kyuubi.jdbc.hive.Utils.verifySuccess(Utils.java:259)
	at org.apache.kyuubi.jdbc.hive.Utils.verifySuccessWithInfo(Utils.java:245)
	at org.apache.kyuubi.jdbc.hive.KyuubiStatement.runAsyncOnServer(KyuubiStatement.java:327)
	at org.apache.kyuubi.jdbc.hive.KyuubiStatement.executeWithConfOverlay(KyuubiStatement.java:249)
	at org.apache.kyuubi.jdbc.hive.KyuubiStatement.executeScala(KyuubiStatement.java:498)
	at KyuubiUtilTestv2$3.run(KyuubiUtilTestv2.java:339)
	at java.lang.Thread.run(Thread.java:750)
java.lang.NoSuchMethodError: $iw()L$iw;
  at .lzycompute(<console>:7)
  at .$print(<console>:6)
  at $print(<console>)
  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 scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:747)
  at scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:1020)
  at scala.tools.nsc.interpreter.IMain.$anonfun$interpret$1(IMain.scala:568)
  at scala.reflect.internal.util.ScalaClassLoader.asContext(ScalaClassLoader.scala:36)
  at scala.reflect.internal.util.ScalaClassLoader.asContext$(ScalaClassLoader.scala:116)
  at scala.reflect.internal.util.AbstractFileClassLoader.asContext(AbstractFileClassLoader.scala:41)
  at scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:567)
  at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:594)
  at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:564)
  at org.apache.kyuubi.engine.spark.repl.KyuubiSparkILoop.$anonfun$interpretWithRedirectOutError$2(KyuubiSparkILoop.scala:104)
  at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
  at scala.Console$.withErr(Console.scala:196)
  at org.apache.kyuubi.engine.spark.repl.KyuubiSparkILoop.$anonfun$interpretWithRedirectOutError$1(KyuubiSparkILoop.scala:104)
  at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
  at scala.Console$.withOut(Console.scala:167)
  at org.apache.kyuubi.engine.spark.repl.KyuubiSparkILoop.interpretWithRedirectOutError(KyuubiSparkILoop.scala:103)
  at org.apache.kyuubi.engine.spark.operation.ExecuteScala.$anonfun$runInternal$1(ExecuteScala.scala:67)
  at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
  at org.apache.kyuubi.engine.spark.operation.SparkOperation.withLocalProperties(SparkOperation.scala:88)
  at org.apache.kyuubi.engine.spark.operation.ExecuteScala.runInternal(ExecuteScala.scala:60)
  at org.apache.kyuubi.operation.AbstractOperation.run(AbstractOperation.scala:133)
  at org.apache.kyuubi.session.AbstractSession.runOperation(AbstractSession.scala:93)
  at org.apache.kyuubi.engine.spark.session.SparkSessionImpl.runOperation(SparkSessionImpl.scala:66)
  at org.apache.kyuubi.session.AbstractSession.$anonfun$executeStatement$1(AbstractSession.scala:122)
  at org.apache.kyuubi.session.AbstractSession.withAcquireRelease(AbstractSession.scala:75)
  at org.apache.kyuubi.session.AbstractSession.executeStatement(AbstractSession.scala:119)
  at org.apache.kyuubi.service.AbstractBackendService.executeStatement(AbstractBackendService.scala:66)
  at org.apache.kyuubi.service.TFrontendService.ExecuteStatement(TFrontendService.scala:232)
  at org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1557)
  at org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1542)
  at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38)
  at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
  at org.apache.kyuubi.service.authentication.TSetIpAddressProcessor.process(TSetIpAddressProcessor.scala:36)
  at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:310)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
  at java.lang.Thread.run(Thread.java:750)
	at org.apache.kyuubi.KyuubiSQLException$.apply(KyuubiSQLException.scala:69)
	at org.apache.kyuubi.engine.spark.operation.ExecuteScala.$anonfun$runInternal$1(ExecuteScala.scala:80)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
	at org.apache.kyuubi.engine.spark.operation.SparkOperation.withLocalProperties(SparkOperation.scala:88)
	at org.apache.kyuubi.engine.spark.operation.ExecuteScala.runInternal(ExecuteScala.scala:60)
	at org.apache.kyuubi.operation.AbstractOperation.run(AbstractOperation.scala:133)
	at org.apache.kyuubi.session.AbstractSession.runOperation(AbstractSession.scala:93)
	at org.apache.kyuubi.engine.spark.session.SparkSessionImpl.runOperation(SparkSessionImpl.scala:66)
	at org.apache.kyuubi.session.AbstractSession.$anonfun$executeStatement$1(AbstractSession.scala:122)
	at org.apache.kyuubi.session.AbstractSession.withAcquireRelease(AbstractSession.scala:75)
	at org.apache.kyuubi.session.AbstractSession.executeStatement(AbstractSession.scala:119)
	at org.apache.kyuubi.service.AbstractBackendService.executeStatement(AbstractBackendService.scala:66)
	at org.apache.kyuubi.service.TFrontendService.ExecuteStatement(TFrontendService.scala:232)
	at org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1557)
	at org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1542)
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38)
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
	at org.apache.kyuubi.service.authentication.TSetIpAddressProcessor.process(TSetIpAddressProcessor.scala:36)
	at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:750)
	at org.apache.kyuubi.jdbc.hive.Utils.verifySuccess(Utils.java:259)
	at org.apache.kyuubi.jdbc.hive.Utils.verifySuccessWithInfo(Utils.java:245)
	at org.apache.kyuubi.jdbc.hive.KyuubiStatement.runAsyncOnServer(KyuubiStatement.java:327)
	at org.apache.kyuubi.jdbc.hive.KyuubiStatement.executeWithConfOverlay(KyuubiStatement.java:249)
	at org.apache.kyuubi.jdbc.hive.KyuubiStatement.executeScala(KyuubiStatement.java:498)

zhaohehuhu avatar Aug 23 '22 04:08 zhaohehuhu

BTW, the share level in Kyuubi is USER

zhaohehuhu avatar Aug 23 '22 05:08 zhaohehuhu