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实现进程间通信简单实例
Jul 23 Python
python 根据pid杀死相应进程的方法
Jan 16 Python
对Python中plt的画图函数详解
Nov 07 Python
Python 如何优雅的将数字转化为时间格式的方法
Sep 26 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
浅析Python3 pip换源问题
Jan 06 Python
Python3使用xlrd、xlwt处理Excel方法数据
Feb 28 Python
使用keras时input_shape的维度表示问题说明
Jun 29 Python
python Matplotlib数据可视化(1):简单入门
Sep 30 Python
matplotlib绘制正余弦曲线图的实现
Feb 22 Python
python获取带有返回值的多线程
May 02 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
模仿OSO的论坛(三)
2006/10/09 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
比较全面的PHP数组的使用方法小结
2010/09/23 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
PHP精确计算功能示例
2016/11/29 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
javascript 写类方式之六
2009/07/05 Javascript
JS学习之一个简易的日历控件
2010/03/24 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
Python中的多行注释文档编写风格汇总
2016/06/16 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
python 字符串格式化的示例
2020/09/21 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
如何获得EntityManager
2014/02/09 面试题
员工试用期考核自我鉴定
2014/04/13 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
2015年学生资助工作总结
2015/05/25 职场文书
Python Numpy库的超详细教程
2022/04/06 Python