You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kyuubi.apache.org by ch...@apache.org on 2021/08/21 16:29:00 UTC

[incubator-kyuubi] branch branch-1.3 updated: [KYUUBI #659] Add UDF engine_name

This is an automated email from the ASF dual-hosted git repository.

chengpan pushed a commit to branch branch-1.3
in repository https://gitbox.apache.org/repos/asf/incubator-kyuubi.git


The following commit(s) were added to refs/heads/branch-1.3 by this push:
     new 4de2976  [KYUUBI #659] Add UDF engine_name
4de2976 is described below

commit 4de2976fd41a14ea4dd1dfdcd96d7a92f86c2a8a
Author: Min Zhao <zh...@163.com>
AuthorDate: Sun Aug 22 00:28:45 2021 +0800

    [KYUUBI #659] Add UDF engine_name
    
    <!--
    Thanks for sending a pull request!
    
    Here are some tips for you:
      1. If this is your first time, please read our contributor guidelines: https://kyuubi.readthedocs.io/en/latest/community/contributions.html
      2. If the PR is related to an issue in https://github.com/NetEase/kyuubi/issues, add '[KYUUBI #XXXX]' in your PR title, e.g., '[KYUUBI #XXXX] Your PR title ...'.
      3. If the PR is unfinished, add '[WIP]' in your PR title, e.g., '[WIP][KYUUBI #XXXX] Your PR title ...'.
    -->
    
    ### _Why are the changes needed?_
    <!--
    Please clarify why the changes are needed. For instance,
      1. If you add a feature, you can talk about the use case of it.
      2. If you fix a bug, you can clarify why it is a bug.
    -->
    Add UDF engine_name to show the runtime information about execution engine
    
    ### _How was this patch tested?_
    - [ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible
    
    - [ ] Add screenshots for manual tests if appropriate
    
    - [ ] [Run test](https://kyuubi.readthedocs.io/en/latest/tools/testing.html#running-tests) locally before make a pull request
    
    Closes #747 from zhaomin1423/udf.
    
    Closes #659
    
    8c3b3c16 [Min Zhao] Merge branch 'master' into udf
    f184a661 [Min Zhao] Merge branch 'master' into udf
    9ea0c190 [Min Zhao] get appName from driver side
    09f07523 [Min Zhao] get conf by SparkEnv.get.conf in the engine_name udf
    6c000784 [Min Zhao] update the description of the engine_name udf
    63ef2762 [Min Zhao] update class to org.apache.kyuubi.engine.spark.udf.KyuubiDefinedFunctionSuite in functions.md
    db02884c [Min Zhao] [KYUUBI #659] Add UDF engine_name
    
    Lead-authored-by: Min Zhao <zh...@163.com>
    Co-authored-by: Min Zhao <49...@users.noreply.github.com>
    Signed-off-by: Cheng Pan <ch...@apache.org>
    (cherry picked from commit 8bab5b8d6a05b33b8ad474811f89299860db60f4)
    Signed-off-by: Cheng Pan <ch...@apache.org>
---
 docs/sql/functions.md                                          |  1 +
 .../scala/org/apache/kyuubi/engine/spark/udf/KDFRegistry.scala | 10 ++++++++++
 .../kyuubi/engine/spark/udf/KyuubiDefinedFunctionSuite.scala   |  1 -
 .../src/test/scala/org/apache/kyuubi/operation/JDBCTests.scala |  9 +++++++++
 4 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/docs/sql/functions.md b/docs/sql/functions.md
index cc6e19e..ba9df14 100644
--- a/docs/sql/functions.md
+++ b/docs/sql/functions.md
@@ -30,5 +30,6 @@ Kyuubi provides several auxiliary SQL functions as supplement to Spark's [Built-
 Name | Description | Return Type | Since
 --- | --- | --- | ---
 kyuubi_version | Return the version of Kyuubi Server | string | 1.3.0
+engine_name | Return the spark application name for the associated query engine | string | 1.3.0
 system_user | Return the system user name for the associated query engine | string | 1.3.0
 
diff --git a/externals/kyuubi-spark-sql-engine/src/main/scala/org/apache/kyuubi/engine/spark/udf/KDFRegistry.scala b/externals/kyuubi-spark-sql-engine/src/main/scala/org/apache/kyuubi/engine/spark/udf/KDFRegistry.scala
index 14c837a..537a771 100644
--- a/externals/kyuubi-spark-sql-engine/src/main/scala/org/apache/kyuubi/engine/spark/udf/KDFRegistry.scala
+++ b/externals/kyuubi-spark-sql-engine/src/main/scala/org/apache/kyuubi/engine/spark/udf/KDFRegistry.scala
@@ -29,6 +29,8 @@ object KDFRegistry {
 
   val registeredFunctions = new ArrayBuffer[KyuubiDefinedFunction]()
 
+  val appName = SparkSession.active.sparkContext.appName
+
   val kyuubi_version: KyuubiDefinedFunction = create(
     "kyuubi_version",
     udf(() => KYUUBI_VERSION).asNonNullable(),
@@ -36,6 +38,14 @@ object KDFRegistry {
     "string",
     "1.3.0")
 
+  val engine_name: KyuubiDefinedFunction = create(
+    "engine_name",
+    udf(() => appName).asNonNullable(),
+    "Return the spark application name for the associated query engine",
+    "string",
+    "1.3.0"
+  )
+
   val system_user: KyuubiDefinedFunction = create(
     "system_user",
     udf(() => System.getProperty("user.name")).asNonNullable(),
diff --git a/externals/kyuubi-spark-sql-engine/src/test/scala/org/apache/kyuubi/engine/spark/udf/KyuubiDefinedFunctionSuite.scala b/externals/kyuubi-spark-sql-engine/src/test/scala/org/apache/kyuubi/engine/spark/udf/KyuubiDefinedFunctionSuite.scala
index 64b03d0..21e8e13 100644
--- a/externals/kyuubi-spark-sql-engine/src/test/scala/org/apache/kyuubi/engine/spark/udf/KyuubiDefinedFunctionSuite.scala
+++ b/externals/kyuubi-spark-sql-engine/src/test/scala/org/apache/kyuubi/engine/spark/udf/KyuubiDefinedFunctionSuite.scala
@@ -86,7 +86,6 @@ class KyuubiDefinedFunctionSuite extends KyuubiFunSuite {
     KDFRegistry.registeredFunctions.foreach { func =>
       newOutput += s"${func.name} | ${func.description} | ${func.returnType} | ${func.since}"
     }
-
     newOutput += ""
     TestUtils.verifyOutput(markdown, newOutput, getClass.getCanonicalName)
   }
diff --git a/kyuubi-common/src/test/scala/org/apache/kyuubi/operation/JDBCTests.scala b/kyuubi-common/src/test/scala/org/apache/kyuubi/operation/JDBCTests.scala
index 2bb533d..13f8e0e 100644
--- a/kyuubi-common/src/test/scala/org/apache/kyuubi/operation/JDBCTests.scala
+++ b/kyuubi-common/src/test/scala/org/apache/kyuubi/operation/JDBCTests.scala
@@ -21,6 +21,7 @@ import java.sql.{Date, SQLException, SQLTimeoutException, Timestamp}
 
 import scala.collection.JavaConverters._
 
+import org.apache.commons.lang3.StringUtils
 import org.apache.hive.service.rpc.thrift.{TExecuteStatementReq, TFetchResultsReq, TOpenSessionReq, TStatusCode}
 
 import org.apache.kyuubi.KYUUBI_VERSION
@@ -362,6 +363,14 @@ trait JDBCTests extends BasicJDBCTests {
     }
   }
 
+  test("kyuubi defined function - engine_name") {
+    withJdbcStatement() { statement =>
+      val rs = statement.executeQuery("SELECT engine_name()")
+      assert(rs.next())
+      assert(StringUtils.isNotBlank(rs.getString(1)))
+    }
+  }
+
   // dockerfile use kyuubi as user which is not same with non-k8s env.
   ignore("kyuubi defined function - system_user") {
     withJdbcStatement() { statement =>