Spark SQL & Datasets & DataFrames

一、Spark SQL

  Spark SQL是一个用于结构化数据处理的Spark模块。与基本的Spark RDD API不同,Spark SQL提供的接口为Spark提供了有关数据结构和正在执行的计算的更多信息。在内部,Spark SQL使用这些额外的信息来执行额外的优化。有几种方法可以与Spark SQL交互,包括SQL和Dataset API。计算结果时,将使用相同的执行引擎,而不依赖于用于表示计算的API/语言。

三、Datasets

  Datasets是数据的分布式集合。Dataset是Spark 1.6中添加的一个新接口,它提供了RDDs(强类型化、使用强大lambda函数的能力)和Spark SQL优化的执行引擎的优点。可以从JVM对象构造数据集,然后使用函数转换(map、flatMap、filter等)进行操作。DataSetAPI在Scala和Java中可用。Python不支持Dataset API。但是由于Python的动态特性,Dataset API的许多优点已经可用(可以自然地按名称访问行的字段)行.列名称). R的情况也类似。

二、DataFrames

  DataFrame是组织为命名列的数据集。从概念上讲,它等效于关系数据库中的表或R / Python中的数据框,但是在后台进行了更丰富的优化。可以从多种来源构造DataFrame,例如:结构化数据文件,Hive中的表,外部数据库或现有RDD。DataFrame API在Scala,Java,Python和R中可用。在Scala和Java中,DataFrame由的数据集表示Row。在Scala API中,DataFrame仅是类型别名Dataset[Row]。而在Java API中,用户需要使用Dataset<Row>来代表DataFrame。通常将的Scala / Java数据集Row称为DataFrames。

猜你喜欢

转载自blog.csdn.net/qq_42979842/article/details/107902362