我是Spark的新手,请尝试一下。目前,我有一个用于将json数据加载到Spark中的架构。 json的结构如下:
{
"value1": 345.2
"value2": 32
}
我正在使用以下模式读取此json结构:
val myJsonschema = StructType(
Array(
StructField("value1", StringType)
StructField("value2", StringType)
)
)
我将架构应用为:
val dataFrame_val1_val2 = myDataStream.select(from_json(col("value").cast("string"), myJsonschema).as("data"))
但是,当我检查dataFrame_val1_val2
的内容时,我得到的是{"$numberDouble":"345.2"}
而不是345.2
的双精度值。对于整数,效果很好。
我在这里想念什么?
答案 0 :(得分:0)
尝试更改架构类型
val schemaJson = new StructType().add(StructField("value1",FloatType)).add(StructField("value2",IntegerType))
json.select(from_json($"json", schemaJson) as "value")
.withColumn("value1",$"value.value1").withColumn("value2",$"value.value2").drop("value")
.show( 5 , false)
答案 1 :(得分:0)
就您而言,根本不需要给出架构; Spark将为您推断模式:
spark.read.json(“yourfile.json”).show