热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pyspark合并两个dataframe_PySpark学习笔记DataFrame操作

最近工作中用到pyspark,在家自学整理了笔记觉得有用的话,点赞支持一下谢谢~SparkContext&SparkSessionSparkContext主要用于创建
f582028b7c97f187ae4b6b31a75869ea.png

最近工作中用到pyspark, 在家自学整理了笔记

觉得有用的话,点赞支持一下谢谢~

SparkContext & SparkSession

SparkContext主要用于创建和操作RDD

SparkSession实质上是SQLContext, HiveContext和SparkContext的组合。在Spark 2.x之前,使用不同的功能,需要引入不同的Context.

  • 创建和操作RDD - SparkContext
  • 使用streaming - StreamingContext
  • 使用SQL - SQLContext
  • 使用Hive - HiveContext

创建SparkSession

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()

数据表读写

(1)查看数据表

spark.catalog.listTables()

(2)从表中查询数据

# retrieve spark dataframe
query = "select * from demo"
data = spark.sql(query)
data.show()# spark dataframe to pandas dataframe
query = "select * from demo"
data = spark.sql(query).toPandas()

(3)输入数据

# csv to spark dataframe
data = spark.read.csv(file_path, header = True)
data.show()# read pandas dataframe to spark dataframe
# add spark_data to the catalog
spark_data = spark.createDataFrame(df)
spark_data.createOrReplaceTempView('temp')# read from catalog table
spark_data = spark.table("table")

数据表操作

spark dataframe是immutable, 因此每次返回的都是一个新的dataframe

(1)列操作

# add a new column
data = data.withColumn("newCol",df.oldCol+1)# replace the old column
data = data.withColumn("oldCol",newCol)# rename the column
data.withColumnRenamed("oldName","newName")# change column data type
data.withColumn("oldColumn", data.oldColumn.cast("integer"))

(2)条件筛选数据

# filter data by pass a string
temp1 = data.filter("col > 1000")# filter data by pass a column of boolean value
temp2 = data.filter(data.col > 1000)

(3)选择数据

# select based on column name
temp1 = data.select("col1","col2")
temp1 = data.select("col1*100 as newCol1")# select based on column object
temp2 = data.select(data.col1, data.col2)
temp2 = data.select(data.col1+1.alias(newCol1))

(4)聚合函数

# get the minimum value of a column
data.groupBy().min("col1")# group by on certain column and do calculation
data.groupBy("col1").max("col2")# agg function
import pyspark.sql.functions as F
data.groupBy("a","b").agg(F.stddev("c"))

(5)合并数据表

newData = data1.join(data2, on = "col", how = "leftouter")
newData = data1.join(data2, data1['col1'] == data2['col2'])




推荐阅读
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 本文介绍了在实现了System.Collections.Generic.IDictionary接口的泛型字典类中如何使用foreach循环来枚举字典中的键值对。同时还讨论了非泛型字典类和泛型字典类在foreach循环中使用的不同类型,以及使用KeyValuePair类型在foreach循环中枚举泛型字典类的优势。阅读本文可以帮助您更好地理解泛型字典类的使用和性能优化。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
author-avatar
qyfdxlwb
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有