Spark2 加载保存文件,数据文件转换成数据框dataframe
hadoop fs -put /home/wangxiao/data/ml/Affairs.csv /datafile/wangxiao/
hadoop fs -ls -R /datafile
drwxr-xr-x - wangxiao supergroup 0 2016-10-15 10:46 /datafile/wangxiao
-rw-r--r-- 3 wangxiao supergroup 16755 2016-10-15 10:46 /datafile/wangxiao/Affairs.csv
-rw-r--r-- 3 wangxiao supergroup 16755 2016-10-13 21:48 /datafile/wangxiao/Affairs.txt
- import org.apache.spark.sql.SparkSession
- import org.apache.spark.sql.DataFrame
- import org.apache.spark.rdd.RDD
- import org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
- import org.apache.spark.sql.Encoder
- object ML1 {
- def main(args: Array[String]) {
- val spark = SparkSession.builder().appName("Spark SQL basic example").config("spark.some.config.option", "some-value").getOrCreate()
- // For implicit conversions like converting RDDs to DataFrames
- import spark.implicits._
- // 创建数据框
- // val data1:DataFrame=spark.read.csv("hdfs://ns1/datafile/wangxiao/Affairs.csv")
- val data1: DataFrame = spark.read.format("csv").load("hdfs://ns1/datafile/wangxiao/Affairs.csv")
- val df = data1.toDF("affairs", "gender", "age", "yearsmarried", "children", "religiousness", "education", "occupation", "rating")
- df.printSchema()
- //##############################################
- // 指定字段名和字段类型
- case class Affairs(affairs: Int, gender: String, age: Int,
- yearsmarried: Double, children: String, religiousness: Int,
- education: Double, occupation: Double, rating: Int)
- val res1 = data1.rdd.map { r =>
- Affairs(r(0).toString().toInt, r(1).toString(), r(2).toString().toInt,
- r(3).toString().toDouble, r(4).toString(), r(5).toString().toInt,
- r(6).toString().toDouble, r(7).toString().toDouble, r(8).toString().toInt)
- }.toDF()
- res1.printSchema()
- //################################################
- //创建RDD
- val data2: RDD[String] = spark.sparkContext.textFile("hdfs://ns1/datafile/wangxiao/Affairs.txt")
- case class Affairs1(affairs: Int, gender: String, age: Int,
- yearsmarried: Double, children: String, religiousness: Int,
- education: Double, occupation: Double, rating: Int)
- // RDD转换成数据框
- val res2 = data2.map { _.split(" ") }.map { line =>
- Affairs1(line(0).toInt, line(1).trim.toString(), line(2).toInt,
- line(3).toDouble, line(4).trim.toString(), line(5).toInt,
- line(6).toDouble, line(7).toDouble, line(8).toInt)
- }.toDF()
- //###############################################
- // 创建视图
- df.createOrReplaceTempView("Affairs")
- // 子查询
- //val df1 = spark.sql("SELECT * FROM Affairs WHERE age BETWEEN 20 AND 25")
- val df1 = spark.sql("select gender, age,rating from ( SELECT * FROM Affairs WHERE age BETWEEN 20 AND 25 ) t ")
- df1.show
- // 保存数据框到文件
- df.select("gender", "age", "education").write.format("csv").save("hdfs://ns1/datafile/wangxiao/data123.csv")
- // 请务必保证jar包运行完成,退出spark,释放资源
- spark.stop
- }
- }
hadoop fs -ls -R /datafile
drwxr-xr-x - wangxiao supergroup 0 2016-10-15 11:43 /datafile/wangxiao
-rw-r--r-- 3 wangxiao supergroup 16755 2016-10-15 10:46 /datafile/wangxiao/Affairs.csv
-rw-r--r-- 3 wangxiao supergroup 16755 2016-10-13 21:48 /datafile/wangxiao/Affairs.txt
drwxr-xr-x - wangxiao supergroup 0 2016-10-15 11:43 /datafile/wangxiao/data123.csv
Spark2 加载保存文件,数据文件转换成数据框dataframe的更多相关文章
- Altium Designer 从导入DXF文件,并转换成板框
大多数人都知道,PADS中导入DXF文件,然后转换成板框,是很方便的.AD也同样可以做到. PADS导入DXF见:http://www.cnblogs.com/craftor/archive/2012 ...
- Learning Spark中文版--第五章--加载保存数据(2)
SequenceFiles(序列文件) SequenceFile是Hadoop的一种由键值对小文件组成的流行的格式.SequenceFIle有同步标记,Spark可以寻找标记点,然后与记录边界重新 ...
- Learning Spark中文版--第五章--加载保存数据(1)
开发工程师和数据科学家都会受益于本章的部分内容.工程师可能希望探索更多的输出格式,看看有没有一些适合他们下游用户的格式.数据科学家可能会更关注他们已经使用的数据格式. Motivation 我 ...
- JAVA加载Properties配置资源文件
JAVA加载Properties配置资源文件 制作人:全心全意 配置文件(资源文件):以properties作为拓展名的文件 Java代码是如何加载properties文件的? 必须使用Propert ...
- spark SQL(三)数据源 Data Source----通用的数据 加载/保存功能
Spark SQL 的数据源------通用的数据 加载/保存功能 Spark SQL支持通过DataFrame接口在各种数据源上进行操作.DataFrame可以使用关系变换进行操作,也可以用来创建临 ...
- 一个link加载多个css文件
细看正则时匹配慕课网链接时发现的,一个link加载多个css文件 http://static.mukewang.com/static/css/??base.css,common/common-less ...
- 死磕Spring之IoC篇 - BeanDefinition 的加载阶段(XML 文件)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 钓鱼攻击之远程加载恶意Word模版文件上线CS
0x00 前言 利用Word文档加载附加模板时的缺陷所发起的恶意请求而达到的攻击目的,所以当目标用户点开攻击者发给他的恶意word文档就可以通过向远程服务器请求恶意模板并执行恶意模板上的恶意代码.这里 ...
- JQuery 加载 CSS、JS 文件
JS 方式加载 CSS.JS 文件: //加载 css 文件 function includeCss(filename) { var head = document.getElementsByTagN ...
随机推荐
- qt creator如何实现转到槽功能
ui_mainwindow.h .
- CentOS6.8手动安装MySQL5.6
众所周知,mysql5.7推出后有很多没有填好的坑,对于老的系统和项目兼容性也存在问题,所以现在普遍的web项目还是应该跑在centos6.8+mysql5.6的环境之下,今天主要说一下mysql5. ...
- mysql中,创建包含json数据类型的表?创建json表时候的注意事项?查询json字段中某个key的值?
需求描述: 在mysql数据库中,创建包含json数据类型的表.记录下,在创建的过程中,需要注意的问题. 操作过程: 1.通过以下的语句,创建包含json数据类型的表 mysql> create ...
- 使用editorconfig配置你的编辑器
摘要: 在团队开发中,统一的代码格式是必要的.但是不同开发人员使用的编辑工具可能不同,这样就造成代码的differ.今天给大家分享一个很好的方法来使不同的编辑器保持一样的风格. 不同的编辑器也有设置代 ...
- python类和模块区别,python命名空间
在python中,类可以提供模块级别之下的命名空间. 如果一个模块写很多函数,某些函数之间共同完成一组功能,用类会看起来更清晰,在调用时候也会更好,对于ide补全有更小范围的限定提示. 类提供 继承 ...
- 使用Matplotlib画图系列(一)
实现一个最简单的plot函数调用: import matplotlib.pyplot as plt y=pp.DS.Transac_open # 设置y轴数据,以数组形式提供 x=len(y) # 设 ...
- Maven -- 发布jar包至远程仓库
啦啦啦
- backbone学习笔记:模型(Model)(1)基础知识
backbone为复杂Javascript应用程序提供MVC(Model View Controller)框架,框架里最基本的是Model(模型),它用来处理数据,对数据进行验证,完成后台数据与前台数 ...
- Git 学习笔记--Git下的冲突解决
冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是merge 和 patch(应用补丁)时产生冲突. 而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突. git pull会自动m ...
- [Windows] 解决 VLC Media Player 的 Crash Reporting 消息弹窗
运行环境:Windows 8.1 (64bits), VLC Media Player 2.1.3 异常描述:首次启动VLC播放影音文件时,一切正常.此后每次启动VLC都弹出"VLC Cra ...