pyspark学习_dataframe常用操作_01

这篇具有很好参考价值的文章主要介绍了pyspark学习_dataframe常用操作_01。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 创建DataFrame

   本文使用DataFrame通过读取json文件获取数据,代码如下:

    文章来源地址https://www.toymoban.com/news/detail-823679.html

from pyspark.sql import SparkSession

spark = SparkSeesion.builder.getOrCreate() #创建sparkSession 

peopleDF = spark.read.format("json").load("people.json") 
"""
spark支持读取多种文件格式:text/json/parquet     
path:文件路径  type:格式类型               返回DataFrame类型
spark.read.text(path)                       
spark.read.json(path)
spark.read.parquet(path)
spark.read.format("text").load(path)  
spark.read.format("json").load(path)  
spark.read.format("parquet").load(path)  
此外spark读取mysql等数据
spark.read.format("jdbc")\
          .option("driver","com.mysql.jdbc.Driver")\
          .option("url","jdbc:mysql://localhost:3306/spark")\
          .option("dbtable","people")\
          .option("user","root")\
          .option("password","root")\
          .load()
"""
"""
相对于读取文件,保存文件类似于读取文件,如下:
peopleDF.write.text(path)
peopleDF.write.json(path)
peopleDF.write.parquet(path)
peopleDF.write.format("text").save(path)
peopleDF.write.format("json").save(path)
peopleDF.write.format("parquet").save(path)
此外spark写入mysql数据
PROP = {}
PROP['driver'] = 'com.mysql.jdbc.Driver'
PROP['user'] = 'root'
PROP['password'] = 'root'
peopleDF.write.jdbc(url="jdbc:mysql://localhost:3306/spark",table="people",mode="append",properties=PROP)  
mode主要有两种模式:append:元数据保存,插入新数据 
overwrite:删除原有数据,插入新数据
"""
 2.  DataFrame常见操作
      2.1 printSchema
#printSchema:打印出DataFrame的模式
peopleDF.printSchema()

输出如下:
root
 |-- age: long (nullable = true)
 |-- name: string (nullable = true)
2.2 show 
#show:显示dataframe
"""
show(n) #控制输出行数
show(truncate=false) #不展示所有字段,如果truncate=true,则展示全部字段
show(n,truncate=true) #控制输出行数并不隐藏字段   truncate默认true
"""

peopleDF.show()

输出如下:
+---+----+
|age|name|
+---+----+
| 12| tom|
| 22|jack|
| 33| Bob|
+---+----+
2.3 select
#select:从DataFrame中选取部分列的数据
peopleDF.select(['name','age']).show()

peopleDF.select(peopleDF['name'],peopleDF['age']).show()

输出如下:
+----+---+
|name|age|
+----+---+
| tom| 12|
|jack| 22|
| Bob| 33|
+----+---+
2.4 groupBy 
#groupBy:对记录进行分组,一般后续和sum()/count()函数
peopleDF.groupBy('name').count().show()
+----+-----+
|name|count|
+----+-----+
|jack|    1|
| Bob|    1|
| tom|    1|
+----+-----+
2.5 filter
#filter:按条件对数据进行筛选
peopleDF.filter(peopleDF['age']>20).show()

输出如下:
+---+----+
|age|name|
+---+----+
| 22|jack|
| 33| Bob|
+---+----+
2.6 sort
#sort:对数据进行排序
peopleDF.sort(peopleDF['name'].asc(),peopleDF['age'].desc()).show()  
#按照name升序,如果name排序一致,按照age降序

输出如下:
+---+----+
|age|name|
+---+----+
| 33| Bob|
| 22|jack|
| 12| tom|
+---+----+
2.7 replace
#replace:替换内容
peopleDF.replace("Bob","Jane",subset=['name']).show() 
"""
将name字段为Bob改为Jane,如果不设置subset,则针对于整个DataFrame进行修改,注意此处不是substr()相等,而是需要字段等于Bob才进行replace
"""
输出如下:
+---+----+
|age|name|
+---+----+
| 12| tom|
| 22|jack|
| 33|Jane|
+---+----+
2.8 alias
#alias:设置别用名
peopleDF.select(peopleDF['name'].alias('username')).show()  #将name修改为username

输出如下:
+--------+
|username|
+--------+
|     tom|
|    jack|
|     Bob|
+--------+
2.9 withColumn
#withColumn:新增数据列
peopleDF_new = peopleDF.withColumn("test",peopleDF['age']/2)
peopleDF_new .show()

输出如下:
+---+----+-----------------+
|age|name|             test|
+---+----+-----------------+
| 12| tom|              4.0|
| 22|jack|7.333333333333333|
| 33| Bob|             11.0|
+---+----+-----------------+
2.10 foreach
#foreach:函数对每行数据计算
peopleDF.foreach(print)

输出如下:
Row(age=12, name='tom')
Row(age=22, name='jack')
Row(age=33, name='Bob')

到了这里,关于pyspark学习_dataframe常用操作_01的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spark之action算子学习笔记(scala,pyspark双语言)

    函数签名:def collect(): Array[T] 功能说明:收集每个分区数据,以数组Array的形式封装后发给driver。设置driver内存:bin/spark-submit --driver-memory 10G(内存大小) 注意:collect会把所有分区的数据全部拉取到driver端,如果数据量过大,可能内存溢出。 图1 结果 图2 结果 返回RDD中元素的

    2024年02月04日
    浏览(35)
  • pyspark笔记:读取 & 处理csv文件 (pyspark DataFrame)

    pyspark cmd上的命令 pyspark中是惰性操作,所有变换类操作都是延迟计算的,pyspark只是记录了将要对数据集进行的操作 只有需要数据集将数据返回到 Driver 程序时(比如collect,count,show之类),所有已经记录的变换操作才会执行 注意读取出来的格式是Pyspark DataFrame,不是DataFr

    2024年02月08日
    浏览(34)
  • Spark学习——DataFrame清洗HDFS日志并存入Hive中

    目录 1.开启Hadoop集群和Hive元数据、Hive远程连接 2.配置 3.读取日志文件并清洗 4.单独处理第四列的数据——方法一: 5.单独处理第四列的数据——方法二:  6.单独处理第四列的数据——方法三:  7.数据清洗结果展示 8.存入Hive中 9.DataGrip中的代码 HDFS日志文件内容: 我们要将

    2023年04月12日
    浏览(25)
  • Python大数据之PySpark(三)使用Python语言开发Spark程序代码

    Spark Standalone的PySpark的搭建----bin/pyspark --master spark://node1:7077 Spark StandaloneHA的搭建—Master的单点故障(node1,node2),zk的leader选举机制,1-2min还原 【scala版本的交互式界面】bin/spark-shell --master xxx 【python版本交互式界面】bin/pyspark --master xxx 【提交任务】bin/spark-submit --master xxxx 【学

    2024年01月17日
    浏览(39)
  • PySpark-DataFrame条件筛选

    本文是对PySpark的DataFrame中进行条件筛选操作的一个回顾总结。   目录 示例 DataFrame  .where 条件筛选  .filter 过滤 .isin 过滤 funcs.when() 示例 DataFrame  .where 条件筛选  方式1 用df[\\\'col\\\']去比较条件,本质上是对布尔表达式的选择。 # 多个条件中的每个条件注意用()括起来,链接注

    2024年02月02日
    浏览(28)
  • 【pyspark从入门到放弃】DataFrame

    pyspark支持通过pypip、conda下载,或者手动下载。 笔者通过 pip install 命令从pypip下载并配置安装了3.5.0版本的Spark。 使用spark的第一步就是拿到一个 SparkSession 对象。最简单的方法是 即,直接使用默认参数创建实例。也可以做一些配置,比如 创建DataFrame DataFrame 是类似 pandas 库中

    2024年01月16日
    浏览(29)
  • Python与大数据:Hadoop、Spark和Pyspark的应用和数据处理技巧

      在当今的数字时代,数据成为了无处不在的关键资源。大数据的崛起为企业提供了无限的机遇,同时也带来了前所未有的挑战。为了有效地处理和分析大规模数据集,必须依靠强大的工具和技术。在本文中,我们将探讨Python在大数据领域的应用,重点介绍Hadoop、Spark和Pysp

    2024年02月16日
    浏览(36)
  • 林子雨 VirtualBox + Ubuntu[linux] 配置 java、hadoop、Spark[python]、pyspark快速配置流程

    按照步骤快速执行shell,最快速配置。 读者可以根据该篇随记快速回顾流程,以及用到的shell指令和相关配置文件。 是林老师教程的精简版,初次配置者只能作为流程参考,主要和林子雨Spark[python]版课程配套。  林老师厦大实验指南链接如下: Spark编程基础(Python版)教材官

    2024年04月12日
    浏览(34)
  • Python数据攻略-DataFrame的数据操作

    当今时代,数据无处不在,它如同一种语言,讲述着数字背后的故事。但是要理解这些故事需要合适的工具。在数据分析的世界中,Pandas无疑是一位出色的翻译家。本文将深入探讨如何利用Pandas进行数据访问、检查、清理以及可视化,展现数据分析的艺术。 当面对海量数据时

    2024年02月07日
    浏览(43)
  • Python大数据之PySpark(六)RDD的操作

    函数分类 *Transformation操作只是建立计算关系,而Action 操作才是实际的执行者* 。 Transformation算子 转换算子 操作之间不算的转换,如果想看到结果通过action算子触发 Action算子 行动算子 触发Job的执行,能够看到结果信息 Transformation函数 值类型valueType map flatMap filter mapValue 双值

    2024年02月04日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包