如果密钥和值都是字符串数据类型,你可以建议我如何从spark中的某个键的maptype获取值 .

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

我实际上正在使用hivecontext读取一个hive表,试图从hive数据类型的 Map 中获取数据,该 Map 被转换为maptype(stringtype,stringtype,true) .

我已经使用getField尝试了这个场景,但它让我误以为是 .

filtered.select($"properties".getField("transferred_bytes")).show()

错误信息:-

org.apache.spark.sql.AnalysisException:GetField在MapType类型的字段上无效(StringType,StringType,true); at org.apache.spark.sql.catalyst.analysis.Analyzer $ ResolveReferences $ .resolveGetField(Analyzer.scala:307)at org.apache.spark.sql.catalyst.analysis.Analyzer $ ResolveReferences $$ anonfun $ apply $ 7 $$ anonfun $ applyOrElse $ 2.applyOrElse(Analyzer.scala:271)at org.apache.spark.sql.catalyst.analysis.Analyzer $ ResolveReferences $$ anonfun $ apply $ 7 $$ anonfun $ applyOrElse $ 2.applyOrElse(Analyzer.scala:260)