From c0e8b03d93223777bd1e8e5c9dbb7edcb9e37e47 Mon Sep 17 00:00:00 2001 From: peanut-chenzhong <58263343+peanut-chenzhong@users.noreply.github.com> Date: Sat, 29 Jan 2022 10:39:08 +0800 Subject: [PATCH] [HUDI-1977] Fix Hudi CLI tempview query issue (#4626) --- .../hudi/cli/utils/SparkTempViewProvider.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/hudi-cli/src/main/java/org/apache/hudi/cli/utils/SparkTempViewProvider.java b/hudi-cli/src/main/java/org/apache/hudi/cli/utils/SparkTempViewProvider.java index bbd844044..6f5a11ad6 100644 --- a/hudi-cli/src/main/java/org/apache/hudi/cli/utils/SparkTempViewProvider.java +++ b/hudi-cli/src/main/java/org/apache/hudi/cli/utils/SparkTempViewProvider.java @@ -20,8 +20,6 @@ package org.apache.hudi.cli.utils; import org.apache.hudi.exception.HoodieException; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.sql.Dataset; @@ -31,27 +29,34 @@ import org.apache.spark.sql.SQLContext; import org.apache.spark.sql.types.DataType; import org.apache.spark.sql.types.DataTypes; import org.apache.spark.sql.types.StructType; +import org.springframework.shell.support.logging.HandlerUtils; import java.util.List; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.Logger; import java.util.stream.Collectors; public class SparkTempViewProvider implements TempViewProvider { - private static final Logger LOG = LogManager.getLogger(SparkTempViewProvider.class); + private static final Logger LOG = HandlerUtils.getLogger(SparkTempViewProvider.class); private JavaSparkContext jsc; private SQLContext sqlContext; public SparkTempViewProvider(String appName) { try { + Handler handler = LOG.getParent().getHandlers()[0]; SparkConf sparkConf = new SparkConf().setAppName(appName) .set("spark.serializer", "org.apache.spark.serializer.KryoSerializer").setMaster("local[8]"); jsc = new JavaSparkContext(sparkConf); - jsc.setLogLevel("ERROR"); - sqlContext = new SQLContext(jsc); + if (handler != null) { + LOG.getParent().removeHandler(LOG.getParent().getHandlers()[0]); + LOG.getParent().addHandler(handler); + } } catch (Throwable ex) { // log full stack trace and rethrow. Without this its difficult to debug failures, if any - LOG.error("unable to initialize spark context ", ex); + LOG.log(Level.WARNING, "unable to initialize spark context ", ex); throw new HoodieException(ex); } } @@ -90,7 +95,7 @@ public class SparkTempViewProvider implements TempViewProvider { System.out.println("Wrote table view: " + tableName); } catch (Throwable ex) { // log full stack trace and rethrow. Without this its difficult to debug failures, if any - LOG.error("unable to write ", ex); + LOG.log(Level.WARNING, "unable to write ", ex); throw new HoodieException(ex); } } @@ -101,7 +106,7 @@ public class SparkTempViewProvider implements TempViewProvider { this.sqlContext.sql(sqlText).show(Integer.MAX_VALUE, false); } catch (Throwable ex) { // log full stack trace and rethrow. Without this its difficult to debug failures, if any - LOG.error("unable to read ", ex); + LOG.log(Level.WARNING, "unable to read ", ex); throw new HoodieException(ex); } } @@ -112,7 +117,7 @@ public class SparkTempViewProvider implements TempViewProvider { sqlContext.sql("SHOW TABLES").show(Integer.MAX_VALUE, false); } catch (Throwable ex) { // log full stack trace and rethrow. Without this its difficult to debug failures, if any - LOG.error("unable to get all views ", ex); + LOG.log(Level.WARNING, "unable to get all views ", ex); throw new HoodieException(ex); } } @@ -123,7 +128,7 @@ public class SparkTempViewProvider implements TempViewProvider { sqlContext.sql("DROP TABLE IF EXISTS " + tableName); } catch (Throwable ex) { // log full stack trace and rethrow. Without this its difficult to debug failures, if any - LOG.error("unable to initialize spark context ", ex); + LOG.log(Level.WARNING, "unable to initialize spark context ", ex); throw new HoodieException(ex); } }