har*_*ran 4 apache-spark apache-spark-sql
我试图了解数据集和数据框之间的区别,并找到了以下有用的链接,但我无法理解类型安全是什么意思?
DataFrame(在 Spark 2.0 中,即 DataSet[Row] )和 Spark 中的 RDD 之间的区别
小智 5
RDD 和数据集是类型安全的意味着编译器知道列和列的数据类型,无论它是 Long、String 等......
但是,在 Dataframe 中,例如,每次调用动作时,collect()
它都会将结果作为 Array of Rows 而不是 Long、String 数据类型返回。在数据框中,列有自己的类型,例如整数、字符串,但它们不会向您公开。对你来说,它的任何类型。要将数据行转换为合适的类型,您必须使用.asInstanceOf
方法。
例如:在 Scala 中:
scala > :type df.collect()
Array[org.apache.spark.sql.Row]
df.collect().map{ row =>
val str = row(0).asInstanceOf[String]
val num = row(1).asInstanceOf[Long]
}
Run Code Online (Sandbox Code Playgroud)
小智 1
类型安全是 Spark 2.0 中的一个高级 API。
我们需要这个 API 对数据集中的行执行更复杂的操作。
例如:
departments.joinWith(people, departments("id") === people("deptId"), "left_outer").show
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8794 次 |
最近记录: |