由于UTFDataFormatException引起的任务无法在Spark中序列化:编码字符串太长

埃里克·哈瓦那(ErikHabanero)

我在纱线上运行我的Spark应用程序时遇到一些问题。我有非常广泛的集成测试,正在运行,没有任何问题,但是当我在YARN上运行应用程序时,它将引发以下错误:

17/01/06 11:22:23 ERROR yarn.ApplicationMaster: User class threw exception: org.apache.spark.SparkException: Task not serializable
org.apache.spark.SparkException: Task not serializable
    at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:304)
    at org.apache.spark.util.ClosureCleaner$.org$apache$spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:294)
    at org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:122)
    at org.apache.spark.SparkContext.clean(SparkContext.scala:2067)
    at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:324)
    at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:323)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:150)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:111)
    at org.apache.spark.rdd.RDD.withScope(RDD.scala:316)
    at org.apache.spark.rdd.RDD.map(RDD.scala:323)
    at org.apache.spark.sql.DataFrame.map(DataFrame.scala:1410)
    at com.orgx.yy.dd.check.DQCheck$class.runDQCheck(DQCheck.scala:24)
    at com.orgx.yy.dd.check.DQBatchCheck.runDQCheck(DQBatchCheck.scala:13)
    at com.orgx.yy.dd.check.DQBatchCheck.doCheck(DQBatchCheck.scala:23)
    at com.orgx.yy.dd.DQChecker$.main(DQChecker.scala:60)
    at com.orgx.yy.dd.DQChecker.main(DQChecker.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:542)
Caused by: java.io.UTFDataFormatException: encoded string too long: 72887 bytes
    at java.io.DataOutputStream.writeUTF(DataOutputStream.java:364)
    at java.io.DataOutputStream.writeUTF(DataOutputStream.java:323)
    at com.typesafe.config.impl.SerializedConfigValue.writeValueData(SerializedConfigValue.java:295)
    at com.typesafe.config.impl.SerializedConfigValue.writeValue(SerializedConfigValue.java:369)
    at com.typesafe.config.impl.SerializedConfigValue.writeValueData(SerializedConfigValue.java:309)
    at com.typesafe.config.impl.SerializedConfigValue.writeValue(SerializedConfigValue.java:369)
    at com.typesafe.config.impl.SerializedConfigValue.writeValueData(SerializedConfigValue.java:309)
    at com.typesafe.config.impl.SerializedConfigValue.writeValue(SerializedConfigValue.java:369)
    at com.typesafe.config.impl.SerializedConfigValue.writeValueData(SerializedConfigValue.java:309)
    at com.typesafe.config.impl.SerializedConfigValue.writeValue(SerializedConfigValue.java:369)
    at com.typesafe.config.impl.SerializedConfigValue.writeExternal(SerializedConfigValue.java:435)
    at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1459)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1430)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
    at scala.collection.immutable.$colon$colon.writeObject(List.scala:379)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
    at org.apache.spark.serializer.JavaSerializationStream.writeObject(JavaSerializer.scala:44)
    at org.apache.spark.serializer.JavaSerializerInstance.serialize(JavaSerializer.scala:101)
    at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:301)
    ... 20 more
17/01/06 11:22:24 INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 15, (reason: User class threw exception: org.apache.spark.SparkException: Task not serializable)

罪魁祸首似乎是java.io.UTFDataFormatException:编码的字符串太长:at 72887字节。任何人都知道为什么会这样吗?

埃里克·哈瓦那(ErikHabanero)

我设法解决了这个问题。问题是我将Typesafe配置引入了无法序列化的函数所使用的类之一。通过添加配置,这增加了总内存占用并超过了64KB的限制。

当我从类中删除配置对象时,它又可以正常工作了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spark:由于自定义字符串比较,在Filter命令期间无法序列化任务

来自分类Dev

使用xml序列化器保存对象状态。推荐的方法是从属性或硬编码字符串中获取节点名称?

来自分类Dev

为什么 XML 字符串由于根元素中的前缀而无法反序列化?

来自分类Dev

DataOutputStream:“编码字符串太长”限制的目的

来自分类Dev

使用未知编码从字符串中反序列化图像

来自分类Dev

PHP中的编码字符串

来自分类Dev

Spark代码中的“任务无法序列化”错误

来自分类Dev

无法反序列化完整字符串

来自分类Dev

无法反序列化完整字符串

来自分类Dev

无法从MongoDb C#中的BsonType ObjectId反序列化字符串

来自分类Dev

无法在C#中反序列化JSON结果。输入字符串格式错误

来自分类Dev

无法使用Spark结构化流反序列化Avro消息,其中键是字符串序列化,而值是Avro

来自分类Dev

在Android中反序列化JSON字符串

来自分类Dev

Grails 2.3.8国际化编码字符串

来自分类Dev

Python-无法使它正确编码字符串

来自分类Dev

Java编码字符串无法正确转换

来自分类Dev

无法正确编码或解码字符串

来自分类Dev

字符串中的编码字符阻止提交

来自分类Dev

如何修复由于单引号之前的斜杠已删除而损坏的序列化字符串?

来自分类Dev

反序列化字符串

来自分类Dev

Boost序列化字符串*

来自分类Dev

Java 8反序列化base64编码的字符串

来自分类Dev

在再次反序列化之前,替换序列化为字符串的对象中可能嵌套的字符串

来自分类Dev

解码Java中的编码字符串?

来自分类Dev

如何在Angularjs中编码字符串?

来自分类Dev

不要混淆Proguard中的硬编码字符串

来自分类Dev

NodeJ中的URL编码字符串

来自分类Dev

如何在Eclipse中编码字符串?

来自分类Dev

如何在Android中制作编码字符串?

Related 相关文章

  1. 1

    Spark:由于自定义字符串比较,在Filter命令期间无法序列化任务

  2. 2

    使用xml序列化器保存对象状态。推荐的方法是从属性或硬编码字符串中获取节点名称?

  3. 3

    为什么 XML 字符串由于根元素中的前缀而无法反序列化?

  4. 4

    DataOutputStream:“编码字符串太长”限制的目的

  5. 5

    使用未知编码从字符串中反序列化图像

  6. 6

    PHP中的编码字符串

  7. 7

    Spark代码中的“任务无法序列化”错误

  8. 8

    无法反序列化完整字符串

  9. 9

    无法反序列化完整字符串

  10. 10

    无法从MongoDb C#中的BsonType ObjectId反序列化字符串

  11. 11

    无法在C#中反序列化JSON结果。输入字符串格式错误

  12. 12

    无法使用Spark结构化流反序列化Avro消息,其中键是字符串序列化,而值是Avro

  13. 13

    在Android中反序列化JSON字符串

  14. 14

    Grails 2.3.8国际化编码字符串

  15. 15

    Python-无法使它正确编码字符串

  16. 16

    Java编码字符串无法正确转换

  17. 17

    无法正确编码或解码字符串

  18. 18

    字符串中的编码字符阻止提交

  19. 19

    如何修复由于单引号之前的斜杠已删除而损坏的序列化字符串?

  20. 20

    反序列化字符串

  21. 21

    Boost序列化字符串*

  22. 22

    Java 8反序列化base64编码的字符串

  23. 23

    在再次反序列化之前,替换序列化为字符串的对象中可能嵌套的字符串

  24. 24

    解码Java中的编码字符串?

  25. 25

    如何在Angularjs中编码字符串?

  26. 26

    不要混淆Proguard中的硬编码字符串

  27. 27

    NodeJ中的URL编码字符串

  28. 28

    如何在Eclipse中编码字符串?

  29. 29

    如何在Android中制作编码字符串?

热门标签

归档