如果键和值都是字符串数据类型,那么可以建议我如何从spark中的某个键的maptype获取值。
|-- properties: map (nullable = true)
| |-- key: string
| |-- value: string (valueContainsNull = true)
我实际上正在使用hivecontext读取一个hive表,试图从hive数据类型的地图中获取数据,该数据转换为maptype(stringtype,stringtype,true)。
我已经使用getField尝试了这个场景,但它让我误以为是。
filtered.select($"properties".getField("transferred_bytes")).show()
错误消息: -
org.apache.spark.sql.AnalysisException:GetField在MapType类型的字段上无效(StringType,StringType,true); 在org.apache.spark.sql.catalyst.analysis.Analyzer $ ResolveReferences $ .resolveGetField(Analyzer.scala:307) 在org.apache.spark.sql.catalyst.analysis.Analyzer $ ResolveReferences $$ anonfun $ apply $ 7 $$ anonfun $ applyOrElse $ 2.applyOrElse(Analyzer.scala:271) 在org.apache.spark.sql.catalyst.analysis.Analyzer $ ResolveReferences $$ anonfun $ apply $ 7 $$ anonfun $ applyOrElse $ 2.applyOrElse(Analyzer.scala:260)