我有一个在 Quarkus 上运行的 Java 应用程序,用于使用版本为
3.5.0
的 Spark 库读取 Delta Lake 表和 Parquet 文件。以下方法在读取数据方面效果很好,但我的问题是日志记录(java.util.logging)。
public static long getParquetFileRowCount(String parquetFilePath) {
logger.log(Level.INFO, "Starting to read parquet file: " + parquetFilePath);
long count = 0;
try (
SparkSession spark = SparkSession
.builder()
.appName("Java Spark SQL basic example")
.config("spark.local.dir","/tmp")
.config("spark.master", "local")
.getOrCreate()) {
count = parquetRowCount(spark, parquetFilePath);
spark.stop();
}
System.out.println("SOUT Read parquet file: " + parquetFilePath + " finished.");
System.out.println("SOUT count: " + count);
logger.log(Level.INFO, "Read parquet file: " + parquetFilePath + " finished.");
return count;
}
输出:
INFO: Starting to read parquet file: *filepath*
SOUT Read parquet file: *filepath* finished.
SOUT count: *count*
因此显示的唯一消息来自 SOUT 方法,而不是记录器,甚至来自我的应用程序的不同类的任何其他日志。即使在下一次执行该操作之后,输出中也只有来自 SOUT 的消息。
有没有办法让 java.util.logging 与 Spark 一起工作?