Spark的Row和InternalRow类型之间的差异

mar*_*ios 9 apache-spark spark-dataframe apache-spark-dataset

目前Spark有两个Row实现:

import org.apache.spark.sql.Row
import org.apache.spark.sql.catalyst.InternalRow
Run Code Online (Sandbox Code Playgroud)

什么需要两个?它们是代表相同的编码实体,但一个在内部使用(内部API),另一个与外部API一起使用?

zet*_*ime 0

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 {
Run Code Online (Sandbox Code Playgroud)