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的Django框架中生成CSV文件的方法
Jul 22 Python
Python实现的快速排序算法详解
Aug 01 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
python+mysql实现学生信息查询系统
Feb 21 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
python返回数组的索引实例
Nov 28 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
Python3实现打印任意宽度的菱形代码
Apr 12 Python
python 如何调用远程接口
Sep 11 Python
Python:__eq__和__str__函数的使用示例
Sep 26 Python
python各种excel写入方式的速度对比
Nov 10 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函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
2013/06/25 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
二级域名转向类
2006/11/09 Javascript
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
Python实现命令行通讯录实例教程
2016/08/18 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
如何基于python实现不邻接植花
2020/05/01 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
局域网定义和特性
2016/01/23 面试题
接受捐赠答谢词
2014/01/27 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
教师学期个人总结
2015/02/11 职场文书
捐书仪式主持词
2015/07/04 职场文书
行为习惯主题班会
2015/08/14 职场文书
带你学习MySQL执行计划
2021/05/31 MySQL
Python max函数中key的用法及原理解析
2021/06/26 Python
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server