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求斐波那契数列示例分享
Feb 14 Python
python控制台显示时钟的示例
Feb 24 Python
Python实现冒泡,插入,选择排序简单实例
Aug 18 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
关于numpy中eye和identity的区别详解
Nov 29 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
Python Opencv轮廓常用操作代码实例解析
Sep 01 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 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分页函数代码(简单实用型)
2010/12/02 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
2016/05/26 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
python使用PyGame模块播放声音的方法
2015/05/20 Python
利用python求相邻数的方法示例
2017/08/18 Python
深入理解Django的自定义过滤器
2017/10/17 Python
Python OpenCV获取视频的方法
2018/02/28 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
幼儿园教师奖惩制度
2014/02/01 职场文书
教学实验楼管理制度
2014/02/01 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
刑事辩护词范文
2015/05/21 职场文书
出生证明范本
2015/06/15 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书