1.DataFrame基本介绍
DataFrame表示的是一个二维的表。二维表,必然存在行、列等表结构描述信息 表结构描述信息(元数据Schema): StructType对象 字段: StructField对象,可以描述字段名称、字段数据类型、是否可以为空 行: Row对象 列: Column对象,包含字段名称和字段值 在一个StructType对象下,由多个StructField组成,构建成一个完整的元数据信息
如何构建表结构信息数据:
2.DataFrame的构建方式
方式1: 使用SparkSession的createDataFrame(data,schema)函数创建 data参数 1.基于List列表数据进行创建 2.基于RDD弹性分布式数据集进行创建 3.基于pandas的DataFrame数据进行创建 schema参数 1: 字符串 格式一 :“字段名1 字段类型,字段名2 字段类型” 格式二(推荐):“字段名1:字段类型,字段名2:字段类型” 2: List 格式: ["字段名1","字段名2"] 3: DataType(推荐,用的最多) 格式一:schema=StructType().add('字段名1',字段类型).add('字段名2',字段类型) 格式二:schema=StructType([StructField('字段名1',类型),StructField('字段名1',类型)]) 方式2: 使用DataFrame的toDF(colNames)函数创建 DataFrame的toDF方法是一个在Apache Spark的DataFrame API中用来创建一个新的DataFrame的方法。这个方法可以将一个RDD转换为DataFrame,或者将一个已存在的DataFrame转换为另一个DataFrame。在Python中,你可以使用toDF方法来指定列的名字。如果你不指定列的名字,那么默认的列的名字会是_1, _2等等。 格式: rdd.toDF([列名]) 方式3: 使用SparkSession的read()函数创建 在 Spark 中,SparkSession 的 read 是用于读取数据的入口点之一,它提供了各种方法来读取不同格式的数据并将其加载到 Spark 中进行处理。 统一API格式: spark.read .format('text|csv|json|parquet|orc|...') : 读取外部文件的方式 .option('k','v') : 选项 可以设置相关的参数 (可选) .schema(StructType | String) : 设置表的结构信息 .load('加载数据路径') : 读取外部文件的路径, 支持 HDFS 也支持本地 简写API格式: 注意: 以上所有的外部读取方式,都有简单的写法。spark内置了一些常用的读取方案的简写 格式: spark.read.文件读取方式() 注意: parquet:是Spark中常用的一种列式存储文件格式和Hive中的ORC差不多, 他俩都是列存储格式
2.1 createDataFrame()创建
场景:一般用在开发和测试中。因为只能处理少量的数据
2.1.1 基于列表
# 导包 import os from pyspark.sql import SparkSession # 绑定指定的python解释器 os.environ['SPARK_HOME'] = '/export/server/spark' os.environ['PYSPARK_PYTHON'] = '/root/anaconda3/bin/python3' os.environ['PYSPARK_DRIVER_PYTHON'] = '/root/anaconda3/bin/python3' # 创建main函数 if __name__ == '__main__': # 1.创建SparkContext对象 spark = SparkSession.builder.appName('pyspark_demo').master('local[*]').getOrCreate() # 2.创建D