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 09 Python
python中set常用操作汇总
Jun 30 Python
利用Celery实现Django博客PV统计功能详解
May 08 Python
python使用SMTP发送qq或sina邮件
Oct 21 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
python数据化运营的重要意义
Nov 25 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
Feb 11 Python
Django实现将views.py中的数据传递到前端html页面,并展示
Mar 16 Python
Python Web项目Cherrypy使用方法镜像
Nov 05 Python
Python3读写ini配置文件的示例
Nov 06 Python
python 实现超级玛丽游戏
Nov 25 Python
Flask搭建一个API服务器的步骤
May 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
SONY ICF-F10中波修复记
2021/03/02 无线电
php框架Phpbean说明
2008/01/10 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
Java中final关键字详解
2015/08/10 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
Javascript操作URL函数修改版
2013/11/07 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
Windows下PyMongo下载及安装教程
2015/04/27 Python
Python数据操作方法封装类实例
2017/06/23 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
Python数据可视化之画图
2019/01/15 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
python中的decimal类型转换实例详解
2019/06/26 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
python循环输出三角形图案的例子
2019/11/22 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
C#基础面试题
2016/10/17 面试题
物流合作计划书
2014/01/10 职场文书
党员十八大心得体会
2014/09/12 职场文书
新郎新娘致辞
2015/07/31 职场文书