我是Spark的新手并且尝试了一些。目前,我有一个模式,我使用它将json数据加载到Spark中。 json的结构如下:
{
"value1": 345.2
"value2": 32
}
我使用以下Schema来读取这个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
的双倍值。对于整数工作正常。
我在这里错过了什么?
尝试更改架构类型
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)
在您的情况下,根本不需要提供架构; Spark会为你推断架构:
spark.read.json(“yourfile.json”).show