1、Spark中的DataFrame是什么?
官方解释:
DataFrame = RDD[Person] - 泛型 + Schema + SQL操作 + 优化
官方原文:A DataFrame is a DataSet organized into named columns.
中文翻译:以列(列名,列类型,列值)的形式构成的分布式的数据集。
用大白话讲:
在 Spark 中,DataFrame 是一种以 RDD 为基础的分布式数据集,是一种特殊的RDD,是一个分布式的表,类似于传统数据库中的二维表格。DataFrame 与 RDD 的主要区别在于,前者带有 schema 元信息,即 DataFrame 所表示的二维表数据集的每一列都带有名称和类型。
2、DataFrame中的Schema是什么?
解释:其实就是结构表的列名与列类型。
Schema 的两种定义方式:
- 使用 StructType 定义,是一个样例类,属性为 StructField 的数组
- 使用 StructField 定义,同样是一个样例类,有四个属性,其中字段名称和类型为必填
from pyspark.sql.types import *
# 构建 Schema 对象
schema=StructType([
StructField('name',StringType()),
StructField('age',IntegerType())
])
3、DataFrame中的Row是什么?
解释:DataFrame中每条数据封装在Row中,Row表示每行数据。
如何构建Row对象?
from pyspark.sql import Row
# 构建 Row 对象
Row(value1, value2, value3, ...)