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


Posted in Python onJune 07, 2018

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之间的相互转换方法

以上这篇spark: RDD与DataFrame之间的相互转换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
python3.x上post发送json数据
Mar 04 Python
Django基于ORM操作数据库的方法详解
Mar 27 Python
Pandas删除数据的几种情况(小结)
Jun 21 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
基于python3监控服务器状态进行邮件报警
Oct 19 Python
python自动化unittest yaml使用过程解析
Feb 03 Python
详解python算法常用技巧与内置库
Oct 17 Python
Python的信号库Blinker用法详解
Dec 31 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 Python
Python各协议下socket黏包问题原理
Apr 12 Python
Python简单实现网页内容抓取功能示例
Jun 07 #Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 #Python
redis之django-redis的简单缓存使用
Jun 07 #Python
PHP实现发送和接收JSON请求
Jun 07 #Python
使用python画个小猪佩奇的示例代码
Jun 06 #Python
python re模块的高级用法详解
Jun 06 #Python
Python实现的爬取网易动态评论操作示例
Jun 06 #Python
You might like
PHP实现批量上传单个文件
2015/12/29 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
理解JS事件循环
2016/01/07 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
python学习手册中的python多态示例代码
2014/01/21 Python
Python中函数的用法实例教程
2014/09/08 Python
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
Python 专题一 函数的基础知识
2017/03/16 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
浅析Git版本控制器使用
2017/12/10 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
国际商务专业学生个人的自我评价
2013/09/28 职场文书
公司员工的自我评价范例
2013/11/01 职场文书
办理信用卡工作证明
2014/09/30 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
2014年教研组工作总结
2014/11/26 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS