我正在使用带有以下数据的scala开发火花应用程序:
+----------+--------------------+
| id| data|
+----------+--------------------+
| id1 |[AC ED 00 05 73 7...|
| id2 |[CF 33 01 61 88 9...|
+----------+--------------------+
该模式显示:
root
|-- id: string (nullable = true)
|-- data: binary (nullable = true)
我试图将此数据框转换为地图对象,其中id为键,数据为值
我尝试过:
df.as[(String, BinaryType)].collect.toMap
但我收到以下错误:
java.lang.UnsupportedOperationException: No Encoder found for org.apache.spark.sql.types.BinaryType
- field (class: "org.apache.spark.sql.types.BinaryType", name: "_2")
- root class: "scala.Tuple2"
BinaryType
是Spark DataType
。它在Scala / Java中映射到Array[Byte]
。
尝试df.as[(String, Array[Byte])].collect.toMap
。
确保已导入会话implicits
,例如import spark.implicits._
,所以您可以隐式创建Encoder[T]
实例。