pyspark开发 pyspark开发pyspark认识关于PySpark,它是Python调用Spark的接口,可以通过调用Python API的方式来编写Spark程序,它支持了大多数的Spark功能,比如SparkDataFrame、Spark SQL、Streaming、MLlib等等。Spark SQL使用这个模块是Spark中用来处理结构化数据的,提供一个SparkDataFrame的东西并且自动解析为分布式SQL查询数据。在Python的Pandas库,也能大致了解了DataFrame,这个其实和它没有太大的区别,只是调用的API可能有些不同罢了。通过使用Spark SQL来处理数据,比如可以用SQL语句、用SparkDataFrame的API或者Datasets API,可以按照需求随心转换,通过SparkDataFrame API 和 SQL 写的逻辑,会被Spark优化器Catalyst自动优化成RDD,即便写得不好也可能运行得很快(如果是直接写RDD可能就挂了)。1、读取数据RDD创建rdd=sc.parallelize([("Sam",28,88),("Flora",28,90),("Run",1,60)])df=rdd.toDF(["name","age","score"])DataFrame创建df=pd.DataFrame([['Sam',28,88],['Flora',28,90],['Run',1,60]],columns=['name','age','score'])Spark_df=spark.createDataFrame(df)```python3.List创建 ```python list_values=[['Sam',28,88],['Flora',28,90],['Run',1,60]]Spark_df=spark.createDataFrame(list_values,['name','age','score'])```python4.读取文件创建 ```python# (1) CSV文件df=spark.read.option("header","true")\.option("inferSchema","true")\.option("delimiter",",")\.csv("./test/data/titanic/train.csv")# (2) json文件df=spark.read.json("./test/data/hello_samshare.json")数据库读取# (1) 读取hive数据spark.sql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING) USING hive")spark.sql("LOAD DATA LOCAL INPATH 'data/kv1.txt' INTO TABLE src")df=spark.sql("SELECT key, value FROM src WHERE key 10 ORDER BY key")# (2) 读取mysql数据url="jdbc:mysql://localhost:3306/test"df=spark.read.format("jdbc")\.option("url",url)\.option("dbtable","runoob_tbl")\.option("user","root")\.option("password","8888")\.load()2、DataFrame简单处理1. 查看DataFrame的APIs# (1)以列表形式返回行df.collect()# (2)返回统计数量df.count()# (3)返回字段列表df.columns# (4)返回数据类型df.dtypes# (5)返回列的基础统计信息,describe("非必须")df.describe(['col_name'])# (6)选定指定列并按照一定顺序呈现df.select("col_name1","col_name2")# (7)查看第1条数据df.first()df.head(1)# (8)查看指定列的枚举值df.freqItems(["col_name1","col_name2"])# (9)返回统计摘要df.summary()# (10)按照一定规则从df随机抽样数据df.sample(0.5)```python#### 2. 简单处理DataFrame的APIs```python# (1)对数据集进行去重df.distinct()# (2)对指定列去重df.dropDuplicates(["col_name"])# (3)根据指定的df对df进行去重df1.exceptAll(df2)# exceptAll()进行df1 - df2的差集运算,保留重复项df1.subtract(df2)# subtract()获取两个 DataFrame 的行级差集,即找出在第一个 DataFrame 中存在,但在第二个中不存在的行# (4)返回两个DataFrame的交集df1.intersectAll(df2)# (5)丢弃指定列df.drop('col_name')# (6)新增列df.withColumn("col_name",col_value)# (7)重命名列名df.withColumnRenamed("col_ora_name","col_new_name")# (8)丢弃空值,DataFrame.dropna(how='any', thresh=None, subset=None)df.dropna(how='all',subset=['col_name'])# (9)空值填充操作df.fillna({"col_name1":"col_value1","col_name2":col_value2})# (10)根据条件过滤df.filter(df.col_name50)# (11)数据集连接,DataFrame.join(other, on=None, how=None)df1.join(df2,df1.id

相关新闻

最新新闻

ms-swift零基础学习教材

ms-swift零基础学习教材

ms-swift 零基础学习教材:从推理到 LoRA 微调与部署 适合刚开始学习 AI 和编程的。你不需要一次看懂全部内容,也不需要死记参数。 第一次只完成“第 0 关 → 第 1 关 → 第 2 关”;成功后再学习自定义数据和参数调节。 本文依据 2026 年 8 月…

2026/8/26 17:11:36
OpenCV面试题

OpenCV面试题

opencv面试复习 1 OpenCV 中 cv::Mat 的深拷贝和浅拷贝问题cv::Mat 默认赋值和拷贝构造是浅拷贝,只复制矩阵头信息,底层像素数据共享,OpenCV 通过引用计数管理内存。这样可以减少大图像复制带来的性能开销。如果需要真正复制图像数据&#xf…

2026/8/26 17:11:36
Git 重置模式详解:四种重置方式的原理与应用场景

Git 重置模式详解:四种重置方式的原理与应用场景

引言 在日常使用 Git 进行版本控制的过程中,开发者时常需要调整提交历史或清理工作区状态。git reset 命令是最常用的历史重写工具之一,但其四种重置模式——软重置(soft)、混合重置(mixed)、硬重置&#x…

2026/8/26 17:11:36
scrapy爬取动态页面的正确姿势

scrapy爬取动态页面的正确姿势

不能否认, 它是相当出色的爬虫框架, 其借用的是相似的办法去爬取网页, 即所爬取的是静态页面, 然而实际情形是, 多数网站均为动态的, 我们所见到的正常页面皆是经浏览器渲染后的成果, 倘若径直运用爬取网页的方式, 极有可能无法获取到预期的数据。一种看似理所当然的办法, 便是…

2026/8/26 17:11:36
Level 4自动驾驶系统设计45——L2/L3 级软硬件架构 1

Level 4自动驾驶系统设计45——L2/L3 级软硬件架构 1

8.2 L3 级方案:单片 32G/64G 算力 SoC 运行端到端感知网络的性能瓶颈 8.2.1 责任边界重划对 L3 级单片方案的“物理拷问” 从 Level 2 级的“失效安全(Fault-Safe,见 8.1 节)”跨越到 Level 3 级有条件自动驾驶,汽车工业的核心变阵不仅是算法性能的提升,更是法律责任主…

2026/8/26 17:11:36
光明语言已经完成了预定的开发工作,具体请看一下合并报告 :合并报告_第六轮.md 合并报告_第五轮.md咱们的光明语言,可以胜任DeepSeek-harness怎样的大型项目的开发工作了吗?

光明语言已经完成了预定的开发工作,具体请看一下合并报告 :合并报告_第六轮.md 合并报告_第五轮.md咱们的光明语言,可以胜任DeepSeek-harness怎样的大型项目的开发工作了吗?

第六轮光明语言已经完成了预定的开发工作,具体请看一下合并报告 :合并报告_第六轮.md 合并报告_第五轮.md 咱们的光明语言,可以胜任DeepSeek-harness怎样的大型项目的开发工作了吗? 如果不行,请展开分析。 我们的第五轮…

2026/8/26 17:06:35