Apache spark 如何在Spark数据集中使用Akka ByteString

Apache spark 如何在Spark数据集中使用Akka ByteString,apache-spark,serialization,akka,Apache Spark,Serialization,Akka,我需要在Spark数据集中使用Akka的ByteString,因为有一些遗留代码(因此不可能使用其他任何东西,例如Array[Byte])。但是Spark抛出以下异常,即使是对ByteString的简单使用。我应该如何在数据集中使用它 // Code context.session.range(1, 10).map(i => akka.util.ByteString(i.toString)) // Exception [error] Exception in thread "main"

我需要在Spark数据集中使用Akka的
ByteString
,因为有一些遗留代码(因此不可能使用其他任何东西,例如
Array[Byte]
)。但是Spark抛出以下异常,即使是对
ByteString
的简单使用。我应该如何在数据集中使用它

// Code
context.session.range(1, 10).map(i => akka.util.ByteString(i.toString))

// Exception
[error] Exception in thread "main" scala.MatchError: akka.util.ByteString (of class scala.reflect.internal.Types$ClassNoArgsTypeRef)                                                                               
[error]         at org.apache.spark.sql.catalyst.ScalaReflection$.org$apache$spark$sql$catalyst$ScalaReflection$$serializerFor(ScalaReflection.scala:496)                                                          
[error]         at org.apache.spark.sql.catalyst.ScalaReflection$.serializerFor(ScalaReflection.scala:438)                                                                                                         
[error]         at org.apache.spark.sql.catalyst.encoders.ExpressionEncoder$.apply(ExpressionEncoder.scala:71)                                                                                                     
[error]         at org.apache.spark.sql.SQLImplicits.newSequenceEncoder(SQLImplicits.scala:167)          

您可以通过以下两种方式实现:

scala> val akkaByteString = ByteString("xyz")
akkaByteString: akka.util.ByteString = ByteString(120, 121, 122)

scala> akkaByteString.utf8String
res0: String = xyz

scala> akkaByteString.decodeString("US-ASCII")
res1: String = xyz