天天看点

Spark DataFrame

DataFrame是一种不可变的分布式数据集,这种数据集被组织成指定的列,类似于关系数据库中的表。SchemaRDD作为Apache Spark 1.0版本中的实验性工作,它在Apache Spark 1.3版本中被命名为DataFrame。对于熟悉Python pandas DataFrame或者R DataFrame的读者,Spark DataFrame是一个近似的概念,即允许用户轻松地使用结构化数据(如数据表)。

通过在分布式数据集上施加结构,让Spark用户利用Spark SQL来查询结构化的数据或使用Spark表达式方法(而不是lambda)。

通过构建数据,使得Apache Spark引擎——具体来说就是catalyst优化器(catalyst Optimizer)——显著提高了Spark的查询性能。Spark早期的API中(即RDD),由于JVM和Py4J之间的通信开销,使用Python执行的查询会明显变慢。

使用Spark DataFrame,Python开发人员可以利用一个简单的并且潜在地加快速度的抽象层。最初Spark中的Python速度慢的一个主要原因源自于Python子进程和JVM之间的通信层。对于python DataFrame的用户,我们有一个在Scala DataFrame周围的Python包装器,Scala DataFrame避免了Python子进程/JVM的通信开销。