Apache spark Spark中的数据帧和数据集
我是Spark的新手,正在浏览数据帧和数据集。我试图理解它们之间的区别,但我感到困惑。Apache spark Spark中的数据帧和数据集,apache-spark,apache-spark-sql,apache-spark-dataset,Apache Spark,Apache Spark Sql,Apache Spark Dataset,我是Spark的新手,正在浏览数据帧和数据集。我试图理解它们之间的区别,但我感到困惑。 我一开始就发现RDD的抽象是按以下顺序进行的 RDD(Spark1.0)->数据帧(Spark1.3)->数据集(Spark1.6) Q.1在链接上,它说Dataframe是Dataset[Row]的别名,即Row类型的数据集。如果Dataframe是首先完成的RDD抽象,这是否意味着数据集已经存在于Spark1.3中,或者在开发Spark1.6时,Dataframe被重新定义为数据集[行] Q.2在链接上,
我一开始就发现RDD的抽象是按以下顺序进行的 RDD(Spark1.0)->数据帧(Spark1.3)->数据集(Spark1.6) Q.1在链接上,它说Dataframe是Dataset[Row]的别名,即Row类型的数据集。如果Dataframe是首先完成的RDD抽象,这是否意味着数据集已经存在于Spark1.3中,或者在开发Spark1.6时,Dataframe被重新定义为数据集[行] Q.2在链接上,它说 数据集是特定于域的对象的强类型集合,可以使用函数或关系操作并行转换。每个数据集还有一个称为DataFrame的非类型化视图,它是行的数据集 如果Dataframe实际上是Dataset[Row],为什么Dataframe被称为非类型化?这里的类型不是应该是Row[defined]吗 Q.3如果数据帧是Dataset[Row],那么为什么要单独定义数据帧?此外,Dataset的每个操作也应该可以在Dataframe上调用。如果上述陈述不真实或有点真实,请随时回答 如果这些问题涉及面太广,请让我知道。我会根据需要编辑它们
SchemaRDD
和DataFrame
到Dataset[Row]
)并不意味着内部连续性。内部API经历了重大更改,当前的实现甚至与最初的Spark SQL尝试不相似
在1.3中没有Dataset
这样的东西,直到2.0,DataFrame
才与Dataset
统一起来
是行
的容器(集合),因此不可能进行有意义的静态键入。这并不意味着它是“非类型化的”(任意
是类型层次结构的有效元素),但它只是不向编译器提供有用的信息Any
- 在
DSL级别缺乏类型检查,这与另一点相同,是相当误导的,因为它完全保留了类型系统约束DataFrame
Dataset[Row]
是Dataset
的一种特殊情况-它通常必须提供至少与Dataset[\u]
一样多的数据,但可以提供更多。事实就是这样
此外,与专门的DataFrame
操作相比,它是保持向后兼容性的“特例”,特别是当“强类型”变体不太流行,并且通常效率较低时SchemaRDD
和DataFrame
到Dataset[Row]
)并不意味着内部连续性。内部API经历了重大更改,当前的实现甚至与最初的Spark SQL尝试不相似
在1.3中没有Dataset
这样的东西,直到2.0,DataFrame
才与Dataset
统一起来
是行
的容器(集合),因此不可能进行有意义的静态键入。这并不意味着它是“非类型化的”(任意
是类型层次结构的有效元素),但它只是不向编译器提供有用的信息Any
- 在
DSL级别缺乏类型检查,这与另一点相同,是相当误导的,因为它完全保留了类型系统约束DataFrame
Dataset[Row]
是Dataset
的一种特殊情况-它通常必须提供至少与Dataset[\u]
一样多的数据,但可以提供更多。事实就是这样
此外,与专门的DataFrame
操作相比,它是保持向后兼容性的“特例”,特别是当“强类型”变体不太流行,并且通常效率较低时谁投了反对票,你能解释这个问题出了什么问题吗?谁投了反对票,你能解释这个问题出了什么问题吗?