大三寒假学习进度笔记9
今日学习时间一小时,学习内容:通过不同格式构建DataFrame对象,包括基于Pandas的DF转换,读取text,csv,json和jparquet创建。
jparquet具有以下特点:
- 列式存储
- 自带Schema
- 具备Predicate Filter特性
一个Parquet文件的内容由Header、Data Block和Footer三部分组成。
在文件的首尾各有一个内容为PAR1的Magic Number,用于标识这个文件为Parquet文件。Header部分就是开头的Magic Number。
Data Block是具体存放数据的区域,由多个Row Group组成,每个Row Group包含了一批数据。
Footer部分由File Metadata、Footer Length和Magic Number三部分组成。Footer Length是一个4字节的数据,用于标识Footer部分的大小,帮助找到Footer的起始指针位置。Magic Number同样是PAR1。File Metada包含了非常重要的信息,包括Schema和每个Row Group的Metadata。每个Row Group的Metadata又由各个Column的Metadata组成,每个Column Metadata包含了其Encoding、Offset、Statistic信息等等。
接下来是我今日学习过程中使用到的一些代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # coding:utf8 from pyspark.sql import SparkSession from pyspark.sql.types import StructType, StringType, IntegerType import pandas as pd if __name__ = = '__main__' : spark = SparkSession.builder. \ appName( "test" ). \ master( "local[*]" ). \ getOrCreate() sc = spark.sparkContext #text数据源,读取数据的特点是:将一整行只作为一个列读取 schema = StructType().add( "data" , StringType(), nullable = True ) df = spark.read. format ( "text" ).\ schema(schema = schema).\ load( "../data/input/people.txt" ) #json类型自带有Schema信息 df = spark.read. format ( "json" ).load( "../data/input/people.json" ) #读取csv格式 df = spark.read. format ( "csv" ).\ option( "sep" , ";" ).\ option( "header" , True ).\ option( "encoding" , "utf-8" ).\ schema( "name STRING,age INT, job STRING" ).\ load( "../data/input/people.csv" ) #读取parquet数据源 自带schema,直接load,其他不需要 df = spark.read. format ( "parquet" ).load( "../data/input/users.parquet" ) df.printSchema() df.show() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!