Scala构建元数据
反射方式构建元数据:
通过反射来获取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构建元数据的更多相关文章
- scala构建类似java的pojo
主要看以下代码: package com.test.scalaw.test.demo import scala.beans.BeanProperty /** * scala构建类似java 的pojo ...
- 【Scala-ML】怎样利用Scala构建并行机器学习系统
引言 在学习Scala的过程中,我发现其在构建大规模分布式计算系统上有与生俱来的特质. 其丰富的类型系统能够帮助编程设计提供非常好的信息隐藏和抽象,其monoids和monads概念利用Scala高阶 ...
- 【Scala-ML】使用Scala构建机器学习工作流
引言 在这一小节中.我将介绍基于数据(函数式)的方法来构建数据应用.这里会介绍monadic设计来创建动态工作流,利用依赖注入这种高级函数式特性来构建轻便的计算工作流. 建模过程 在统计学和概率论中, ...
- Scala构建工具SBT
SBT(Simple Build Tool)是Scala的项目构建工具,拥有依赖管理,构建过程管理和打包等功能. SBT官网上给出各平台的安装方法: MAC: 使用homebrew安装 brew in ...
- Scala构建工具sbt的配置
时间是17年12月24日.初学Scala,想使用它的标配构建工具sbt,结果好大一轮折腾,因为公司隔离外网,需要内部代理,所以尤其折腾.下面的配置参考了好多篇不同的文章,已经没法一一留下出处了.而且还 ...
- scala泛函编程是怎样被选中的
现在计算机技术发展现象是:无论硬件技术如何发展都满足不了软件需求:无论处理器变得能跑多快,都无法满足软件对计算能力的需要.按照摩尔定律(Moore's Law)处理器(CPU)每平方面积上包含的半导体 ...
- 利用Google开源Java容器化工具Jib构建镜像
转载:https://blog.csdn.net/u012562943/article/details/80995373 一.前言 容器的出现让Java开发人员比以往任何时候都更接近“编写一次,到处运 ...
- 加速和简化构建Docker(基于Google jib)
赵安家 2019年02月11日阅读 1518 关注 加速和简化构建Docker(基于Google jib) 介绍 其实jib刚发布时就有关注,但是一直没有用于生产,原因有二 基于 spotify/do ...
- Scala学习一——基础
一.使用Scala解释器 如果以命令行的方式运行,输出的结果会把类型带上,且结果名默认为res0递增.且Scala解释器读到一个解释器求值打印然后读取下一个(这个过程为读取-求值-打印-循环[REPL ...
随机推荐
- Python模块入门(一)
一.模块介绍 模块就是一系列功能的集合体 模块有三种来源: 1.内置模块:python内提供的模块 2.第三方模块:由第三方提供的模块 3.自定义模块:自行定义的模块 模块的格式: 1.使用pytho ...
- 5.1 Linux(8)
2019-5-1 21:37:20 嗓子前天回来上火,现在不疼了就是有点痒痒! 多喝热水 今天老师讲的如何发布项目,其实就是配置一下自己的uwsgi和 Nginx 配置一下 其他的不难 笔记很详细 ...
- 微信小程序电商实战-首页(上)
嗨,大家好!经过近两周的精心准备终于开始微信小程序电商实战之路喽.那么最终会做成什么样呢?当然可以肯定不会只做一个静态demo哦,先把我们小程序电商实战的整体架构发出来晒一下,请看下图: 架构图. ...
- (三)JavaScript之[事件]与[字符串]
5].事件**JavaScript事件:HTML事件 * HTML事件是发生在HTML元素上的事情 * HTML事件可以是[浏览器的行为],也可以是[用户的行为] * * 实例: * HTML页面完成 ...
- Cg shadow of sphere
参考自:https://en.wikibooks.org/wiki/GLSL_Programming/Unity/Soft_Shadows_of_Spheres using UnityEngine; ...
- 老笔记本装xubuntu+win7
https://www.freezhongzi.info/?p=167 1 install xubuntu 分区如下 sda1 20g ext4 / sda2 80g ext4 /data sda3 ...
- 微信小程序之怎样识别一个小程序用户
本节主要是说下怎样识别一个小程序的用户,需要用什么数据来做标识呢: 我们应该都知道判断是不是一个用户大部分都是通过userid来判断,如果这个用户访问的应用发送了一个请求,把userid之类的数据发给 ...
- element-ui打包的坑爹之处 !!!必看三遍!!!
最近笔者打包element-ui出现如下问题: ERROR in static/js/0.4cad92088cb8dc6e7afd.js from UglifyJs Unexpected token: ...
- ffmpeg 安装和参数介绍
0.说明: 1).configure,这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:./configure –pr ...
- 创建一个gradle项目
1.创建项目 一定要选这个安装的路径 项目创建成功,修改build.gradle文件,主要是为了下载依赖的jar包,原始模板, 而我修改之后,如下 apply plugin: 'idea' apply ...