当前位置: 首页 > news >正文

pyspark.sql.types

示例:

from datetime import datetime, date
from decimal import Decimal
from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, FloatType, ArrayType, BooleanType, \DateType, TimestampType, DecimalType, MapType# 初始化 SparkSession 对象
spark = SparkSession.builder \.appName("Example PySpark Script with Advanced Data Types") \.getOrCreate()# 定义数据结构
schema = StructType([StructField("name", StringType(), True),StructField("age", IntegerType(), True),StructField("weight", FloatType(), True),StructField("interests", ArrayType(StringType()), True),StructField("has_license", BooleanType(), True),StructField("birthday", DateType(), True),StructField("last_checkup", TimestampType(), True),StructField("balance", DecimalType(precision=10, scale=2), True),StructField("preferences", MapType(StringType(), StringType()), True)
])# 创建数据
data = [("Alice",34,65.5,["reading", "swimming"],True,date(1990, 1, 1),datetime(2023, 1, 1, 10, 0, 0),Decimal('12345.67'),{"theme": "dark", "language": "en"}),("Bob",45,80.2,["gaming", "traveling"],False,date(1979, 5, 15),datetime(2023, 5, 15, 12, 0, 0),Decimal('54321.01'),{"theme": "light", "language": "fr"}),("Cathy",29,55.0,["cooking", "painting"],True,date(1995, 8, 20),datetime(2023, 8, 20, 14, 0, 0),Decimal('7890.12'),{"theme": "dark", "language": "zh"})
]# 创建 DataFrame
df = spark.createDataFrame(data=data, schema=schema)# 查看 DataFrame 结构
df.printSchema()# 显示 DataFrame 内容
df.show(truncate=False)# 关闭 SparkSession
spark.stop()
root|-- name: string (nullable = true)|-- age: integer (nullable = true)|-- weight: float (nullable = true)|-- interests: array (nullable = true)|    |-- element: string (containsNull = true)|-- has_license: boolean (nullable = true)|-- birthday: date (nullable = true)|-- last_checkup: timestamp (nullable = true)|-- balance: decimal(10,2) (nullable = true)|-- preferences: map (nullable = true)|    |-- key: string|    |-- value: string (valueContainsNull = true)+-----+---+------+-------------------+-----------+----------+-------------------+--------+--------------------------------+
|name |age|weight|interests          |has_license|birthday  |last_checkup       |balance |preferences                     |
+-----+---+------+-------------------+-----------+----------+-------------------+--------+--------------------------------+
|Alice|34 |65.5  |[reading, swimming]|true       |1990-01-01|2023-01-01 10:00:00|12345.67|{language -> en, theme -> dark} |
|Bob  |45 |80.2  |[gaming, traveling]|false      |1979-05-15|2023-05-15 12:00:00|54321.01|{language -> fr, theme -> light}|
|Cathy|29 |55.0  |[cooking, painting]|true       |1995-08-20|2023-08-20 14:00:00|7890.12 |{language -> zh, theme -> dark} |
+-----+---+------+-------------------+-----------+----------+-------------------+--------+--------------------------------+
  1. 导入必要的模块

    • 从 pyspark.sql 导入 SparkSession
    • 从 pyspark.sql.functions 导入 to_dateto_timestamp
    • 从 pyspark.sql.types 导入 StructTypeStructFieldStringTypeIntegerTypeFloatTypeArrayTypeBooleanTypeDateTypeTimestampTypeDecimalTypeMapType
    • 从 decimal 模块导入 Decimal 类。
    • 从 datetime 模块导入 datetimedate 类。
  2. 初始化 SparkSession 对象

    • 创建一个名为 "Example PySpark Script with Advanced Data Types" 的 SparkSession。
  3. 定义数据结构

    • 使用 StructType 定义整个 DataFrame 的结构。
    • 包括姓名(字符串)、年龄(整数)、体重(浮点数)、兴趣爱好(数组)、是否有驾照(布尔值)、生日(日期)、最近一次体检时间(时间戳)、银行账户余额(十进制数)和偏好设置(映射)。
  4. 创建数据

    • 创建一个包含示例数据的列表 data,并将日期和时间戳类型的字符串转换为 date 和 datetime 对象。
  5. 创建 DataFrame

    • 使用 spark.createDataFrame 方法创建 DataFrame,并指定其结构。
  6. 查看 DataFrame 结构

    • 使用 df.printSchema() 查看 DataFrame 的结构。
  7. 显示 DataFrame 内容

    • 使用 df.show(truncate=False) 显示 DataFrame 的内容。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 想了解ECM衍生材料?看这里,从提取到应用!
  • Flask session cookie 失效在Safari中的解决方法
  • web前端-HTML常用标签(二)
  • 代理伺服器地址怎麼正確填寫-okeyproxy
  • 零基础国产GD32单片机编程入门(十九)红外避障传感器模块实战含源码
  • Android视频编辑:利用FFmpeg实现高级功能
  • LVM逻辑卷创建的完整过程
  • python-月份有几天
  • Win使用SSH
  • k8s Prometheus
  • flask下https教程
  • OpenGL Texture C++ 预览Camera视频
  • 一分钟了解网络安全风险评估!
  • 叠螺污泥脱水机的成本包括哪些方面
  • 2024年Ai智能绘画Stable Diffusion软件+整合包+保姆式教程
  • 收藏网友的 源程序下载网
  • 77. Combinations
  • ES6 学习笔记(一)let,const和解构赋值
  • Git的一些常用操作
  • Javascript Math对象和Date对象常用方法详解
  • JSONP原理
  • node 版本过低
  • Python利用正则抓取网页内容保存到本地
  • React-Native - 收藏集 - 掘金
  • 闭包--闭包作用之保存(一)
  • 初探 Vue 生命周期和钩子函数
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 关于springcloud Gateway中的限流
  • 聊聊directory traversal attack
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 如何实现 font-size 的响应式
  • 使用common-codec进行md5加密
  • 使用SAX解析XML
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • elasticsearch-head插件安装
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • # centos7下FFmpeg环境部署记录
  • # 数据结构
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #宝哥教你#查看jquery绑定的事件函数
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #在 README.md 中生成项目目录结构
  • (12)目标检测_SSD基于pytorch搭建代码
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (4)事件处理——(7)简单事件(Simple events)
  • (k8s中)docker netty OOM问题记录
  • (SERIES12)DM性能优化
  • (二)hibernate配置管理
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)原始图像数据和PDF中的图像数据
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET CLR Hosting 简介