反射方式构建元数据: 

  通过反射来获取RDD中的Schema信息。这种方式适合于列名(元数据)已知的情况下

    步骤:

      1.SparkConf配置环境

      2.SparkContext初始化上下文

      3.SQLContext初始化SparkSQL上下文

      4.创建一个普通的RDD(sc.textFile)

      5.使用map方法切割行数据,切割取出数据放入case类中

         studented(lines(0).toInt, lines(1), lines(2).toInt)

      6.反射方式中普通RDD创建DataFrame需要导入隐式转换

         //注意:需要导入一个隐式转换
         import sQLContext.implicits._
         val df: DataFrame = rdd2.toDF()

      7.注册临时表

         方式一: df.createTempView("student1")
         方式二: df.registerTempTable("student")  //过时了

      8.写SQL语句,自由的浪起来

         val sql = sQLContext.sql("select * from student")

      9.保存结果到本地或者HDFS

        //保存查询结果到本地
        sql.write.json("c:\\demo\\gaoyong.json")
        //保存查询结果到HDFS
        sql.write.json("hdfs://awen01:9000/json")

编程接口方式构建元数据:

  通过编程接口的方式将Schema信息应用于RDD,这种方式可以处理那种在运行时才能知道列的方式。

一般不知道元数据的情况下使用.

    步骤:

      1.SparkConf配置环境

      2.SparkContext初始化上下文

      3.SQLContext初始化SparkSQL上下文

      4.创建一个普通的RDD(sc.textFile)

      5.使用map切割行数据,将需要的字段放入到Row类中

        val lines: RDD[Row] = rdd.map(t => {
        val str = t.split(",")
          Row(str(0).toInt, str(1), str(2).toInt)
        })

      6.编程结构的方式需要构建表的框架,构建StructType,及其元数据

val structType: StructType = StructType(Array(
StructField("ids",IntegerType,true)
StructField("names",StringType,true)
StructField("ages",IntegerType,true)
))

      7.构建DataFrame

        val df = sQLContext.createDataFrame(lines,structType)

      8.注册临时表

         方式一: df.createTempView("student1")
         方式二: df.registerTempTable("student")  //过时了

      9.写SQL语句,自由的浪起来

         val sql = sQLContext.sql("select * from student")

      10.保存结果到本地或者HDFS

        //保存查询结果到本地
        sql.write.json("c:\\demo\\gaoyong.json")
        //保存查询结果到HDFS
        sql.write.json("hdfs://awen01:9000/json")

Scala构建元数据的更多相关文章

  1. scala构建类似java的pojo

    主要看以下代码: package com.test.scalaw.test.demo import scala.beans.BeanProperty /** * scala构建类似java 的pojo ...

  2. 【Scala-ML】怎样利用Scala构建并行机器学习系统

    引言 在学习Scala的过程中,我发现其在构建大规模分布式计算系统上有与生俱来的特质. 其丰富的类型系统能够帮助编程设计提供非常好的信息隐藏和抽象,其monoids和monads概念利用Scala高阶 ...

  3. 【Scala-ML】使用Scala构建机器学习工作流

    引言 在这一小节中.我将介绍基于数据(函数式)的方法来构建数据应用.这里会介绍monadic设计来创建动态工作流,利用依赖注入这种高级函数式特性来构建轻便的计算工作流. 建模过程 在统计学和概率论中, ...

  4. Scala构建工具SBT

    SBT(Simple Build Tool)是Scala的项目构建工具,拥有依赖管理,构建过程管理和打包等功能. SBT官网上给出各平台的安装方法: MAC: 使用homebrew安装 brew in ...

  5. Scala构建工具sbt的配置

    时间是17年12月24日.初学Scala,想使用它的标配构建工具sbt,结果好大一轮折腾,因为公司隔离外网,需要内部代理,所以尤其折腾.下面的配置参考了好多篇不同的文章,已经没法一一留下出处了.而且还 ...

  6. scala泛函编程是怎样被选中的

    现在计算机技术发展现象是:无论硬件技术如何发展都满足不了软件需求:无论处理器变得能跑多快,都无法满足软件对计算能力的需要.按照摩尔定律(Moore's Law)处理器(CPU)每平方面积上包含的半导体 ...

  7. 利用Google开源Java容器化工具Jib构建镜像

    转载:https://blog.csdn.net/u012562943/article/details/80995373 一.前言 容器的出现让Java开发人员比以往任何时候都更接近“编写一次,到处运 ...

  8. 加速和简化构建Docker(基于Google jib)

    赵安家 2019年02月11日阅读 1518 关注 加速和简化构建Docker(基于Google jib) 介绍 其实jib刚发布时就有关注,但是一直没有用于生产,原因有二 基于 spotify/do ...

  9. Scala学习一——基础

    一.使用Scala解释器 如果以命令行的方式运行,输出的结果会把类型带上,且结果名默认为res0递增.且Scala解释器读到一个解释器求值打印然后读取下一个(这个过程为读取-求值-打印-循环[REPL ...

随机推荐

  1. Geek to Live: Set up your personal Wikipedia

    http://lifehacker.com/163707/geek-to-live--set-up-your-personal-wikipedia Filed to: Wikipedia Captur ...

  2. bootstrap导航栏的辛酸史

    昨天本来想完成test10的页面内容的,但是给老铁拉出去打麻将呢.不过还好昨天写了一些内容.现在奉上.不作更改. 今天完成的事情:(实现了test9的响应式导航栏的垂直平分和下拉列表的居中问题.) 我 ...

  3. Design Pattern ->Bridge

    Layering & Contract Philosophy With additional indirection. class CWindowImp { public: virtual v ...

  4. 转:ACCESS数据库转ORACLE数据库分享

    来源: 作者:zz 网上有很多文章介绍access转oracle数据库的方法,本人都尝试了,不是很成功,列举一下,后来人不必盲目试了,基本不成功: 1.Access-->excel-->P ...

  5. 【起航计划 012】2015 起航计划 Android APIDemo的魔鬼步伐 11 App->Activity->Save & Restore State onSaveInstanceState onRestoreInstanceState

    Save & Restore State与之前的例子Android ApiDemo示例解析(9):App->Activity->Persistent State 实现的UI类似,但 ...

  6. 在 eclipse 中调出其内置的浏览器

    两种方法: 1.点击工具栏中的浏览器图标,就会在主面板中出现浏览器: 跳出一个blank页面,如下: 第二种方法:点击Window——Show view——Other 输入 "browser ...

  7. seleniumCSS用法

    http://sauceio.com/index.php/2009/10/selenium-tip-of-the-week-start-improving-your-locators/ http:// ...

  8. 给网站添加图标: Font Awesome

    先贴上各种图标的网址:https://fontawesome.com/?from=io 1.打开网址,我们可以看到: 像我这种英语不好的,直接用谷歌浏览器进行翻译中文好了,自己还是有点B数的····· ...

  9. TP5.1:连接数据库(全局配置、动态配置、DSN配置)

    前提: (1)在app\index\controller文件下新建一个名为Connect.php的控制器文件 (2)建立一个名为user_curd数据库,里面有一张user表,表内容为: 通过全局配置 ...

  10. GNU Nano编辑器

    ^表示 control建 ^X 退出 nano ^O 保存文件 ^R 插入其他文件内容至光标位置 ^W 查找字符串 ^Y 跳至前一屏 ^V 跳至后一屏 ^K 剪切光标所在行并保存到剪贴板,或剪切选中内 ...