3

在 Spark SQL 中,用于的 s有限DataType,用于将 JVM 对象转换为内部 Spark SQL 表示和从内部 Spark SQL 表示转换的 s 是有限的。SchemaEncoder

java.lang.UnsupportedOperationException:不支持类型 xxx 的架构

  • 在实践中,我们可能会遇到类似这样的错误Encoder,这通常发生在Dataset[T]带有自定义类型的 a 中,但不会发生在带有自定义类型的 aDataFrame中。讨论Encoder如何在数据集中存储自定义对象?

找不到存储在数据集中的类型的编码器。通过导入 sqlContext.implicits 支持原始类型(Int、String 等)和产品类型(案例类)。未来版本中将添加对序列化其他类型的支持

据我了解,两者都涉及到内部 Spark SQL 优化器(这就是为什么只提供有限数量的DataTypes 和Encoders 的原因);并且两者DataFrameDataset只是Dataset[A],那么..

问题(或更多..混淆)

  • 为什么第一个错误只出现在DataFrame而不出现在Dataset[T]?第二个错误的同样问题......

  • 创建可以UDT解决第二个错误吗?创建编码器可以解决第一个错误吗?

  • 我应该如何理解它们之间的关系,以及它们如何与DatasetSpark SQL 引擎交互?

这篇文章的倡议是在这两个概念上进行更多的探索并吸引公开讨论,所以如果问题不是太具体,请多多包涵……感谢任何理解分享。谢谢。

4

0 回答 0