如果觉得内容不错,别忘记一键三连哦!!!
如果觉得内容不错,别忘记一键三连哦!!!
如果觉得内容不错,别忘记一键三连哦!!!
如果觉得内容不错,别忘记一键三连哦!!!
如果觉得内容不错,别忘记一键三连哦!!!
如果觉得内容不错,别忘记一键三连哦!!!
Spark SQL, DataFrames and Datasets Guide
Spark SQL是用于结构化数据处理的Spark模块。 与基本的Spark RDD API不同,Spark SQL提供的接口为Spark提供了有关数据结构和正在执行的计算的更多信息。 在内部,Spark SQL使用这些额外的信息来执行额外的优化。 与Spark SQL交互的方法有多种,包括SQL和Dataset API。 计算结果时,将使用相同的执行引擎,而与要用来表达计算的API /语言无关。 这种统一意味着开发人员可以轻松地在不同的API之间来回切换,从而提供最自然的方式来表达给定的转换。
本页上的所有示例都使用了包含在Spark分发版中的示例数据,并且可以在Spark -shell、pyspark shell或sparkR shell中运行。
SQL
Spark SQL的一种用途是执行SQL查询。 Spark SQL还可以用于从现有的Hive中读取数据。 有关如何配置此功能的更多信息,请参考Hive Tables部分。 当从另一种编程语言中运行SQL时,结果将作为Dataset / DataFrame返回。 您还可以使用命令行或通过JDBC / ODBC与SQL接口进行交互。
Datasets and DataFrames
Dataset是数据的分布式集合。Dataset是Spark 1.6中添加的一个新接口,它提供了RDDs的优点(强类型、使用强大lambda函数的能力)以及Spark SQL s优化执行引擎的优点。可以从JVM对象构造Dataset,然后使用函数转换(map、flatMap、filter等)操作数据集。DatasetAPI可以在Scala和Java中使用。Python不支持Dataset API。但是由于Python的动态特性,Dataset API的许多优点已经可以使用了(例如,您可以通过名称natural row.columnname访问行字段)。R的情况也是类似的。
DataFrame是组织为命名列的Dataset。 从概念上讲,它等效于关系数据库中的表或R / Python中的数据,但是在后台进行了更丰富的优化。 可以从多种来源构造DataFrame,例如:结构化数据文件,Hive中的表,外部数据库或现有的RDD。 DataFrame API在Scala,Java,Python和R中可用。在Scala和Java中,DataFrame由行的数据集表示。 在Scala API中,DataFrame只是Dataset[Row]的类型别名。 而在Java API中,用户需要使用Dataset表示一个DataFrame。
在整个文档中,我们通常将Scala / Java行数据集称为DataFrames。