如果密钥和值都是字符串数据类型,你可以建议我如何从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)