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类继承与子类实例初始化用法分析
Apr 17 Python
Django中使用group_by的方法
May 26 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
python 接口_从协议到抽象基类详解
Aug 24 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
python如何读写json数据
Mar 21 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
wxPython:python首选的GUI库实例分享
Oct 05 Python
python TK库简单应用(实时显示子进程输出)
Oct 29 Python
python 实现的IP 存活扫描脚本
Dec 10 Python
pycharm Tab键设置成4个空格的操作
Feb 26 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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
php学习之 认清变量的作用范围
2010/01/26 PHP
PHP生成plist数据的方法
2015/06/16 PHP
PHP实现搜索相似图片
2015/09/22 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
2019/03/27 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
Python中的list与tuple集合区别解析
2019/10/12 Python
pygame实现打字游戏
2021/02/19 Python
python实现图像全景拼接
2020/03/27 Python
Python中Selenium模块的使用详解
2020/10/09 Python
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
高中数学教学反思
2014/01/30 职场文书
班级活动策划书
2014/02/06 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
赔偿协议书范本
2014/09/12 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis