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

// affairs:一年来独自外出旅游的频率
// gender:性别
// age:年龄
// yearsmarried:婚龄
// children:是否有小孩
// religiousness:宗教信仰程度(5分制,1分表示反对,5分表示非常信仰)
// education:学历
// occupation:职业(逆向编号的戈登7种分类)
// rating:对婚姻的自我评分(5分制,1表示非常不幸福,5表示非常幸福)

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")
  }
}

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
时间: 2024-12-15 01:36:38

Spark2 加载保存文件,数据文件转换成数据框dataframe的相关文章

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 /datafil

一个link加载多个css文件

细看正则时匹配慕课网链接时发现的,一个link加载多个css文件 http://static.mukewang.com/static/css/??base.css,common/common-less.css?t=2.5,u/u_common-less.css,u/plans-less.css,u/dynamic/home-less.css?v=201708111926 淘宝也有这样的链接 http://a.tbcdn.cn/p/fp/2011a/??html5-reset-min.css,gl

如何动态加载android的so文件,如何压缩apk尺寸

安卓压缩工具集说明文档 一.     工具集介绍 (项目地址:  https://github.com/liyuming1978/NativeLibCompression) 安卓压缩工具集提供了一个极为简洁的方法,能够比安卓原有的Zip提供更高压缩比的存储应用内的so文件 (后期版本还可以支持压缩动态加载的jar包,以及游戏资源文件),同时提供了应用内网络更新下载压缩文件的方法,使得应用可以将部分so存储到云端,减小应用的尺寸. 最高节省50%空间! 在云测平台上测试了158款终端,涵盖2.3到

JS动态加载JS与CSS文件

JS动态加载JS与CSS文件 DEMO 一 HTML页面   jsforjscss.html 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"&

加载 unity的布局文件

using System.IO; using System.Reflection; using Type = System.Type; //加载 unity的布局文件 public static class LayoutUnity { private static MethodInfo _miLoadWindowLayout; private static MethodInfo _miSaveWindowLayout; private static MethodInfo _miReloadWin

.net core加载加密的sqlite文件失败解决方案

.net core加载加密的sqlite文件失败解决方案 ??在项目开发过程中,遇到使用sqlite的场景.在加载加密的sqlite时,连接sqlite时报错,,先用百度查询了下资料,尚未找到对应解决方法,故接着在stackoverflow上查找,找到了解决思路,并已解决问题. 1.开发时所用到的相关内容 1.1相关项目组件 组件名称 版本 Microsoft.NETCore.App 2.1.0 sqlSugarCore 5.0.0.9 1.2 sqlite加密软件 软件名称 版本 SQLite

JQuery 加载 CSS、JS 文件的方法有哪些?

在进行web前端开发(http://www.maiziedu.com/course/web-px/)时,我们可能会需要使用JQuery加载一个外部的css文件或者js文件,加载外部文件的方法有多种,下面具体看看各种加载方法 JS 方式加载 CSS.JS 文件: //加载 css 文件function includeCss(filename) { var head = document.getElementsByTagName('head')[0]; var link = document.cre

java如何加载本地的dll文件

首先,应当明确,dll有两类:(1)Java所依赖的dll和,(2)dll所依赖的dll.正是由于第(2)种dll的存在,才导致了java中加载dll的复杂性大大增加,许多说法都是这样的,但我实验的结果却表明似乎没有那么复杂,后面会予以详细阐述. 其次,Java中加载dll的方式也有两种:(1)通过调用System.loadLibrary(String filename)和,(2)通过调用System.load(String filename)方法.其底层都是通过使用ClassLoader中的l

js便签笔记(8)——js加载XML字符串或文件

1. 加载XML文件 方法1:ajax方式.代码如下: var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); xhr.open("GET", "data.xml", false); xhr.send(null); var xmlDoc = xhr.responseXML; console.log(xmlDoc