yog*_*oga 5 apache-spark apache-spark-sql
我正在尝试在Spark Streaming作业中读取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)
Run Code Online (Sandbox Code Playgroud)
但是当我使用sqlContext从蜂巢表中读取时
val a = sqlContext.sql(“ select * from student_record”)
下面是架构。
|-- leagalname: map (nullable = true)
| |-- key: string
| |-- value: string (valueContainsNull = true)
Run Code Online (Sandbox Code Playgroud)
有什么方法可以读取read.json(rdd)和使用Map数据类型?
有没有类似的选择
spark.sql.schema.convertStructToMap?
任何帮助表示赞赏。
小智 3
调用时,您需要显式定义您的架构read.json。
您可以阅读Spark SQL 文档中以编程方式指定架构的详细信息。
例如,在您的具体情况下,它将是
import org.apache.spark.sql.types._
val schema = StructType(List(StructField("legal_name",MapType(StringType,StringType,true))))
Run Code Online (Sandbox Code Playgroud)
那将是一列legal_name是一张地图。
定义架构后,您可以调用
sqlContext.read.json(rdd, schema)以使用所需架构从 JSON 数据集创建数据框。
| 归档时间: |
|
| 查看次数: |
2351 次 |
| 最近记录: |