Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Spark Scala中,接受所有json字段值作为字符串的正确方法是什么?_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

在Spark Scala中,接受所有json字段值作为字符串的正确方法是什么?

在Spark Scala中,接受所有json字段值作为字符串的正确方法是什么?,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我是一个新的火花和尝试一些手。目前,我使用一个模式将json数据加载到Spark中。json的结构如下所示: { "value1": 345.2 "value2": 32 } 我使用以下模式来读取此json结构: val myJsonschema = StructType( Array( StructField("value1", StringType) StructField("value2", StringType

我是一个新的火花和尝试一些手。目前,我使用一个模式将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\u val1\u 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

我希望始终捕获为字符串,因为value1和value2的值不一致。因此,我只想将它们捕获为字符串。