旧版spark(1.6版本) 将rdd动态转为dataframe
我的原创地址:https://dongkelun.com/2018/05/11/rdd2df/
前言
旧版本spark不能直接读取csv转为df,没有spark.read.option(“header”, “true”).csv这么简单的方法直接将第一行作为df的列名,只能现将数据读取为rdd,然后通过map和todf方法转为df,如果csv的列数很多的话用如Array((1,2..))即Arrar(元组)创建的话很麻烦,本文解决如何用旧版spark读取多列txt文件转为df
1、新版
为了直观明白本文的目的,先看一下新版spark如何实现
1.1 数据
data.csv,如图:
1.2 代码
新版代码较简单,直接通过spark.read.option(“header”, “true”).csv(data_path)即可实现!
package com.dkl.leanring.spark.sql import org.apache.spark.sql.SparkSession object Txt2Df { def main(args: Array[String]): Unit = { val spark = SparkSession.builder().appName("Txt2Df").master("local").getOrCreate() val data_path = "files/data.csv" val df = spark.read.option("header", "true").csv(data_path) df.show() } }
1.3 结果
+----+----+----+----+----+ |col1|col2|col3|col4|col5| +----+----+----+----+----+ | 11| 12| 13| 14| 15| | 21| 22| 23| 24| 25| | 31| 32| 33| 34| 35| | 41| 42| 43| 44| 45| +----+----+----+----+----+
2、旧版
2.1 数据
data.txt
col1,col2,col3,col4,col5 11,12,13,14,15 21,22,23,24,25 31,32,33,34,35 41,42,43,44,45
其中列数可任意指定
2.2 代码
package com.dkl.leanring.spark.sql import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.sql.SQLContext import org.apache.spark.sql.types._ import org.apache.spark.sql.Row object Rdd2Df { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("Rdd2Df").setMaster("local") val sc = new SparkContext(conf) val sqlContext = new SQLContext(sc) import sqlContext.implicits._ val data_path = "files/data.txt" val data = sc.textFile(data_path) val arr = data.collect() //arr1为除去第一行即列名的数据 val arr1 = arr.slice(1, arr.length) val rdd = sc.parallelize(arr1) //列名 val schema = StructType(arr(0).split(",").map(fieldName => StructField(fieldName, StringType, true))) val rowRDD = rdd.map(_.split(",")).map(p => Row(p: _*)) sqlContext.createDataFrame(rowRDD, schema).show() } }
2.3 结果
+----+----+----+----+----+ |col1|col2|col3|col4|col5| +----+----+----+----+----+ | 11| 12| 13| 14| 15| | 21| 22| 23| 24| 25| | 31| 32| 33| 34| 35| | 41| 42| 43| 44| 45| +----+----+----+----+----+
根据结果看,符合逾期的效果!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
大数据从业者应该知道的开源工具(全)
前言 想要成为大数据工程师这些开源工具你要有所了解 一、Hadoop相关工具 1. Hadoop Apache的Hadoop项目已几乎与大数据划上了等号。它不断壮大起来,已成为一个完整的生态系统,众多开源工具面向高度扩展的分布式计算。 支持的操作系统:Windows、Linux和OS X。 相关链接:http://hadoop.apache.org 2. Ambari 作为Hadoop生态系统的一部分,这个Apache项目提供了基于Web的直观界面,可用于配置、管理和监控Hadoop集群。有些开发人员想把Ambari的功能整合到自己的应用程序当中,Ambari也为他们提供了充分利用REST(代表性状态传输协议)的API。 支持的操作系统:Windows、Linux和OS X。 相关链接:http://ambari.apache.org 3. Avro 这个Apache项目提供了数据序列化系统,拥有丰富的数据结构和紧凑格式。模式用JSON来定义,它很容易与动态语言整合起来。 支持的操作系统:与操作系统无关。 相关链接:http://avro.apache.org 4. Cascading...
- 下一篇
关于学习的思考 - 不行就用笨办法【一千零一日】
想想自己的学习经历,自己勉强算是一个坚持自学,并且把终身学习做为重要人生目标的人。从初中开始,基本上所有的东西都是自学的,也很喜欢接触新事物,初中时,因为一些学校原因,初三撤学,然后同年考自学考上高中,高中也基本没在学校待过多久,主要是不喜欢在课堂学习。后来上了大学,专业电子信息,四年基本没上过课,主要是自学,后来读研,一直在导师公司上班,也基本没上过课,后来读博,由于种种原因,放弃了,就工作了。很奇葩的经历!大学觉得跟着老师学太慢,就决定自学,从大一起就泡在图书馆,不知道要学些什么,就学士兵许三多,从A读到Z。是的,当时下决心大学四年,从A读到Z。我们学校藏书600多万册,全读是开玩笑,所以决定选定10到20个方向,每个方向泛读100到200本书,精读10到20本书,也就是说,要从600万册书中选2000册泛读,200到300册
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- 设置Eclipse缩进为4个空格,增强代码规范
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Mario游戏-低调大师作品
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- MySQL8.0.19开启GTID主从同步CentOS8