目前,Spark有两种实现Row的方式:
import org.apache.spark.sql.Row
import org.apache.spark.sql.catalyst.InternalRow
为什么需要同时拥有它们?它们代表相同的编码实体,但一个用于内部API,另一个用于外部API吗?
目前,Spark有两种实现Row的方式:
import org.apache.spark.sql.Row
import org.apache.spark.sql.catalyst.InternalRow
为什么需要同时拥有它们?它们代表相同的编码实体,但一个用于内部API,另一个用于外部API吗?
Row 是(嗯...)Row的稳定版本实现...然而,InternalRow 顾名思义,是在Spark SQL内部使用的。我引用下面的InternalRow文档:
/**
* An abstract class for row used internally in Spark SQL, which only contains the columns as
* internal types.
*/
abstract class InternalRow extends SpecializedGetters with Serializable {
Row
是用户 API 的抽象,而不是实现。除此之外你是正确的。 - shay__