摸鱼大数据——Spark SQL——DataFrame详解一

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

困了就倒头睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值