spark: RDD与DataFrame之间的相互转换方法

作者:birdlove1987 时间:2023-06-09 23:24:04 

DataFrame是一个组织成命名列的数据集。它在概念上等同于关系数据库中的表或R/Python中的数据框架,但其经过了优化。DataFrames可以从各种各样的源构建,例如:结构化数据文件,Hive中的表,外部数据库或现有RDD。

DataFrame API 可以被Scala,Java,Python和R调用。

在Scala和Java中,DataFrame由Rows的数据集表示。

在Scala API中,DataFrame只是一个类型别名Dataset[Row]。而在Java API中,用户需要Dataset<Row>用来表示DataFrame。

在本文档中,我们经常将Scala/Java数据集Row称为DataFrames。

那么DataFrame和spark核心数据结构RDD之间怎么进行转换呢?

代码如下:


# -*- coding: utf-8 -*-
from __future__ import print_function
from pyspark.sql import SparkSession
from pyspark.sql import Row

if __name__ == "__main__":
# 初始化SparkSession
spark = SparkSession \
.builder \
.appName("RDD_and_DataFrame") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()

sc = spark.sparkContext

lines = sc.textFile("employee.txt")
parts = lines.map(lambda l: l.split(","))
employee = parts.map(lambda p: Row(name=p[0], salary=int(p[1])))

#RDD转换成DataFrame
employee_temp = spark.createDataFrame(employee)

#显示DataFrame数据
employee_temp.show()

#创建视图
employee_temp.createOrReplaceTempView("employee")
#过滤数据
employee_result = spark.sql("SELECT name,salary FROM employee WHERE salary >= 14000 AND salary <= 20000")

# DataFrame转换成RDD
result = employee_result.rdd.map(lambda p: "name: " + p.name + " salary: " + str(p.salary)).collect()

#打印RDD数据
for n in result:
print(n)

spark: RDD与DataFrame之间的相互转换方法

来源:https://blog.csdn.net/zhurui_idea/article/details/73090951

标签:spark,RDD,DataFrame
0
投稿

猜你喜欢

  • Python在线和离线安装第三方库的方法

    2023-08-24 19:37:11
  • 一文教你如何快速学会Go的struct数据类型

    2024-02-14 22:58:44
  • 老生常谈python之鸭子类和多态

    2023-09-26 09:00:26
  • 记录微信小程序 height: calc(xx - xx);无效问题

    2024-05-02 16:27:16
  • MySQL安全问题的一点心得

    2009-01-07 16:13:00
  • 理解Python数据离散化手写if-elif语句与pandas中cut()方法实现

    2023-02-24 10:33:33
  • 网站的视觉设计

    2008-08-15 12:58:00
  • 解决mysql5中文乱码问题的方法

    2024-01-15 07:47:52
  • OpenCV实现机器人对物体进行移动跟随的方法实例

    2023-04-20 08:50:49
  • Python求导数的方法

    2023-11-22 07:51:15
  • Python中的生成器和yield详细介绍

    2022-11-11 12:34:24
  • 爬虫框架 Feapder 和 Scrapy 的对比分析

    2022-03-31 00:02:17
  • python广度优先搜索得到两点间最短路径

    2023-09-05 02:06:24
  • asp sqlserver 执行存储过程返回记录集报对象关闭时不允许操作

    2011-03-11 10:57:00
  • pandas 取出表中一列数据所有的值并转换为array类型的方法

    2023-10-04 15:12:52
  • Python缓存方案优化程序性能提高数据访问速度

    2022-04-11 20:36:15
  • python获取当前文件路径以及父文件路径的方法

    2022-07-02 14:06:00
  • BOM中location对象的属性和方法

    2024-04-16 09:55:07
  • 如何决定是否将登录内容保存到Cookie里?

    2009-12-16 18:54:00
  • 网页布局的位置重心与位置间的对比关系

    2007-10-15 19:20:00
  • asp之家 网络编程 m.aspxhome.com