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 相关文章推荐
pyramid配置session的方法教程
Nov 27 Python
python爬虫实战之最简单的网页爬虫教程
Aug 13 Python
基于Python中capitalize()与title()的区别详解
Dec 09 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
python做反被爬保护的方法
Jul 01 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
Python json读写方式和字典相互转化
Apr 18 Python
python中not、and和or的优先级与详细用法介绍
Nov 03 Python
Python3中对json格式数据的分析处理
Jan 28 Python
python神经网络Xception模型
May 06 Python
python语言中pandas字符串分割str.split()函数
Aug 05 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
如何删除多级目录
2006/10/09 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
Linux编译升级php的详细方法
2013/11/04 PHP
php实现水仙花数示例分享
2014/04/03 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
jquery 批量上传图片实现代码
2010/01/28 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
详解vue 在移动端体验上的优化解决方案
2019/05/20 Javascript
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
安装docker-compose的两种最简方法
2019/07/30 Python
CSS3 box-sizing属性
2009/04/17 HTML / CSS
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
酒店总经理欢迎词
2014/01/15 职场文书
二年级语文教学反思
2014/02/02 职场文书
班主任班级寄语大全
2014/04/04 职场文书
部门年终奖分配方案
2014/05/07 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android