JSON 结构到 map[String,String] 使用 sqlContext



我正在尝试读取火花流作业中的 json 数据。默认情况下,sqlContext.read.json(rdd)将所有映射类型转换为结构类型。

|-- legal_name: struct (nullable = true)
 |    |-- first_name: string (nullable = true)
 |    |-- last_name: string (nullable = true)
 |    |-- middle_name: string (nullable = true)

但是当我使用 sqlContext 从 hive 表中读取时

val a = sqlContext.sql("select * from student_record")

下面是架构。

|-- leagalname: map (nullable = true)
 |    |-- key: string
 |    |-- value: string (valueContainsNull = true)

有什么方法可以使用read.json(rdd)读取数据并获取地图数据类型?

有没有这样的选择 spark.sql.schema.convertStructToMap

任何帮助,不胜感激。

调用 read.json 时,您需要显式定义架构。

可以在 Spark SQL 文档中以编程方式指定架构中阅读详细信息。

例如,在您的特定情况下,它将是

import org.apache.spark.sql.types._
val schema = StructType(List(StructField("legal_name",MapType(StringType,StringType,true))))

这将是一列legal_name地图。

定义架构后,可以调用 sqlContext.read.json(rdd, schema)使用所需架构从 JSON 数据集创建数据框。

相关内容

  • 没有找到相关文章

最新更新