Spark BinaryType转换为Scala / Java

问题描述 投票:0回答:1

我正在使用带有以下数据的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"
scala apache-spark apache-spark-dataset
1个回答
0
投票

BinaryType是Spark DataType。它在Scala / Java中映射到Array[Byte]

尝试df.as[(String, Array[Byte])].collect.toMap

确保已导入会话implicits,例如import spark.implicits._,所以您可以隐式创建Encoder[T]实例。

© www.soinside.com 2019 - 2024. All rights reserved.