我有一个表,其中有 1 列是序列化的 JSON。我想在此 JSON 列上应用架构推断。我不知道作为 JSON 提取输入的模式(例如:from_json 函数)。
我可以在 Scala 中这样做
val contextSchema = spark.read.json(data.select("context").as[String]).schema
val updatedData = data.withColumn("context", from_json(col("context"), contextSchema))
Run Code Online (Sandbox Code Playgroud)
如何将此解决方案转换为纯 Spark-SQL?
我的代码中有一个调试日志语句,我将代价高昂的方法调用结果传递给它。
log.debug("Data - {}", obj.costlyMethodCall());
Run Code Online (Sandbox Code Playgroud)
现在,即使调试日志被禁用,obj.costlyMethodCall()也将始终被评估为作为方法参数传递。
缓解这种情况的一种方法是明确检查是否启用了调试日志记录
if (log.isDebugEnabled()) {
log.debug("Data - {}", obj.costlyMethodCall());
}
Run Code Online (Sandbox Code Playgroud)
但这会降低代码的可读性。
有没有更好的方法可以在这里懒惰或有条件地调用obj.costlyMethodCall()?