在 Spark SQL 中,用于的 s是有限DataType
的,用于将 JVM 对象转换为内部 Spark SQL 表示和从内部 Spark SQL 表示转换的 s 是有限的。Schema
Encoder
- 在实践中,我们可能会遇到类似这样的错误
DataType
,这通常发生在DataFrame
带有自定义类型的 a 中,但不会发生在带有自定义类型的 aDataset[T]
中。DataType
(或UDT
)点的讨论如何在 Spark SQL 中为自定义类型定义模式?
java.lang.UnsupportedOperationException:不支持类型 xxx 的架构
- 在实践中,我们可能会遇到类似这样的错误
Encoder
,这通常发生在Dataset[T]
带有自定义类型的 a 中,但不会发生在带有自定义类型的 aDataFrame
中。讨论Encoder
如何在数据集中存储自定义对象?
找不到存储在数据集中的类型的编码器。通过导入 sqlContext.implicits 支持原始类型(Int、String 等)和产品类型(案例类)。未来版本中将添加对序列化其他类型的支持
据我了解,两者都涉及到内部 Spark SQL 优化器(这就是为什么只提供有限数量的DataType
s 和Encoder
s 的原因);并且两者DataFrame
都Dataset
只是Dataset[A]
,那么..
问题(或更多..混淆)
为什么第一个错误只出现在
DataFrame
而不出现在Dataset[T]
?第二个错误的同样问题......创建可以
UDT
解决第二个错误吗?创建编码器可以解决第一个错误吗?我应该如何理解它们之间的关系,以及它们如何与
Dataset
Spark SQL 引擎交互?
这篇文章的倡议是在这两个概念上进行更多的探索并吸引公开讨论,所以如果问题不是太具体,请多多包涵……感谢任何理解分享。谢谢。