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 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
Python深入学习之内存管理
Aug 31 Python
python安装以及IDE的配置教程
Apr 29 Python
基于python爬虫数据处理(详解)
Jun 10 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
Python操作MySQL数据库的方法
Jun 20 Python
Python编写通讯录通过数据库存储实现模糊查询功能
Jul 18 Python
关于Python中的向量相加和numpy中的向量相加效率对比
Aug 26 Python
Python猴子补丁知识点总结
Jan 05 Python
pytorch下大型数据集(大型图片)的导入方式
Jan 08 Python
Python压缩模块zipfile实现原理及用法解析
Aug 14 Python
解决pytorch下出现multi-target not supported at的一种可能原因
Feb 06 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
点评山进PR-D3L三波段收音机
2021/03/02 无线电
深入了解PHP类Class的概念
2012/06/14 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
Python基础之函数用法实例详解
2014/09/10 Python
Python实现爬取逐浪小说的方法
2015/07/07 Python
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
Python 通配符删除文件的实例
2018/04/24 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
python多线程扫描端口(线程池)
2019/09/04 Python
python实现的分层随机抽样案例
2020/02/25 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
css3中仿放大镜效果的几种方式原理解析
2020/12/03 HTML / CSS
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
Android interview questions
2016/12/25 面试题
部队学习十八大感言
2014/01/11 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
培训主管的职业生涯规划
2014/03/06 职场文书
出纳担保书范文
2014/04/02 职场文书
代理人委托书
2014/09/16 职场文书
结婚保证书
2015/01/16 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
goland设置颜色和字体的操作
2021/05/05 Golang
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电