我在尝试使用 json4s 解析 JSON 时收到以下错误:
Non-standard token 'NaN': enable JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS to allow
Run Code Online (Sandbox Code Playgroud)
如何启用此功能?
这段代码非常有效,但它生成了紧凑的JSON(没有换行符/不易读取).
import org.json4s.native.Serialization.write
implicit val jsonFormats = DefaultFormats
//snapshotList is a case class
val jsonString: String = write(snapshotList)
Run Code Online (Sandbox Code Playgroud)
有一种简单的方法可以从中生成漂亮的JSON吗?
我有这个解决方法,但我想知道是否存在更有效的方法:
import org.json4s.jackson.JsonMethods._
val prettyJsonString = pretty(render(parse(jsonString)))
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Structured Streaming API 连接到受 Kerberos 保护的 Kafka 集群。下面是我的代码和 Spark 的输出。我没有看到任何异常,只是客户端断开连接的警告消息。解决此问题的下一步是什么?
import org.apache.spark.sql.SparkSession
import org.apache.log4j.{Logger, Level}
object Main {
def main(args: Array[String]) {
Logger.getLogger("org").setLevel(Level.WARN)
Logger.getLogger("akka").setLevel(Level.WARN)
val spark = SparkSession.builder()
.master("local[*]")
.appName("myapp")
.config("spark.executor.extraJavaOptions", "java.security.auth.login.config=jaas.conf")
.getOrCreate()
import spark.implicits._
val lines = spark.readStream.format("kafka")
.option("kafka.bootstrap.servers", "broker1:9100,broker2:9100")
.option("security.protocol", "SASL_PLAINTEXT")
.option("sasl.kerberos.service.name", "mysvcname")
.option("subscribe", "mytopic")
.load()
val query = lines.select("value").writeStream.format("console").start()
query.awaitTermination()
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
19/02/11 17:15:06 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
19/02/11 …Run Code Online (Sandbox Code Playgroud) 我在 Avro IDL 中尝试了以下代码,该代码引用了逻辑类型时间戳毫秒,但它不起作用。
在 Avro IDL 中使用逻辑类型是否需要导入?或者逻辑类型不可用,我需要使用原始类型(在本例中为 long)?
protocol test {
record test {
timestamp-millis time;
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
Exception in thread "main" org.apache.avro.compiler.idl.ParseException: Undefined name 'timestamp', at line 3, column 9
Run Code Online (Sandbox Code Playgroud)
这当然有效:
protocol test {
record test {
long time;
}
}
Run Code Online (Sandbox Code Playgroud)