摘要: 一、Flow 2.0 简介 1.1 Flow 2.0 的产生 Azkaban 目前同时支持 Flow 1.0 和 Flow2.0 ,但是官方文档上更推荐使用 Flow 2.0,因为 Flow 1.0 会在将来的版本被移除。Flow 2.0 的主要设计思想是提供 1.0 所没有的流级定义。用户可以将属 阅读全文
posted @ 2020-06-29 16:12 数据驱动 阅读(1172) 评论(0) 推荐(0) 编辑
摘要: 一、简介 Azkaban 主要通过界面上传配置文件来进行任务的调度。它有两个重要的概念: Job: 你需要执行的调度任务; Flow:一个获取多个 Job 及它们之间的依赖关系所组成的图表叫做 Flow。 目前 Azkaban 3.x 同时支持 Flow 1.0 和 Flow 2.0,本文主要讲解 阅读全文
posted @ 2020-06-29 16:06 数据驱动 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 一、Azkaban 源码编译 1.1 下载并解压 Azkaban 在 3.0 版本之后就不提供对应的安装包,需要自己下载源码进行编译。 下载所需版本的源码,Azkaban 的源码托管在 GitHub 上,地址为 https://github.com/azkaban/azkaban 。可以使用 git 阅读全文
posted @ 2020-06-29 15:58 数据驱动 阅读(818) 评论(0) 推荐(0) 编辑
摘要: 一、Azkaban 介绍 1.1 背景 一个完整的大数据分析系统,必然由很多任务单元 (如数据收集、数据清洗、数据存储、数据分析等) 组成,所有的任务单元及其之间的依赖关系组成了复杂的工作流。复杂的工作流管理涉及到很多问题: 如何定时调度某个任务? 如何在某个任务执行完成后再去执行另一个任务? 如何 阅读全文
posted @ 2020-06-29 15:53 数据驱动 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 一、隐式转换 1.1 使用隐式转换 隐式转换指的是以 implicit 关键字声明带有单个参数的转换函数,它将值从一种类型转换为另一种类型,以便使用之前类型所没有的功能。示例如下: // 普通人 class Person(val name: String) // 雷神 class Thor(val 阅读全文
posted @ 2020-06-29 10:19 数据驱动 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 一、泛型 Scala 支持类型参数化,使得我们能够编写泛型程序。 1.1 泛型类 Java 中使用 <> 符号来包含定义的类型参数,Scala 则使用 []。 class Pair[T, S](val first: T, val second: S) { override def toString: 阅读全文
posted @ 2020-06-29 10:17 数据驱动 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 一、模式匹配 Scala 支持模式匹配机制,可以代替 swith 语句、执行类型检查、以及支持析构表达式等。 1.1 更好的swith Scala 不支持 swith,可以使用模式匹配 match...case 语法代替。但是 match 语句与 Java 中的 switch 有以下三点不同: Sc 阅读全文
posted @ 2020-06-29 10:14 数据驱动 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 一、函数 1.1 函数与方法 Scala 中函数与方法的区别非常小,如果函数作为某个对象的成员,这样的函数被称为方法,否则就是一个正常的函数。 // 定义方法 def multi1(x:Int) = {x * x} // 定义函数 val multi2 = (x: Int) => {x * x} p 阅读全文
posted @ 2020-06-29 10:12 数据驱动 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 一、继承 1.1 Scala中的继承结构 Scala 中继承关系如下图: Any 是整个继承关系的根节点; AnyRef 包含 Scala Classes 和 Java Classes,等价于 Java 中的 java.lang.Object; AnyVal 是所有值类型的一个标记; Null 是所 阅读全文
posted @ 2020-06-29 10:10 数据驱动 阅读(837) 评论(0) 推荐(0) 编辑
摘要: 一、初识类和对象 Scala 的类与 Java 的类具有非常多的相似性,示例如下: // 1. 在 scala 中,类不需要用 public 声明,所有的类都具有公共的可见性 class Person { // 2. 声明私有变量,用 var 修饰的变量默认拥有 getter/setter 属性 p 阅读全文
posted @ 2020-06-29 10:07 数据驱动 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 一、映射(Map) 1.1 构造Map // 初始化一个空 map val scores01 = new HashMap[String, Int] // 从指定的值初始化 Map(方式一) val scores02 = Map("hadoop" -> 10, "spark" -> 20, "stor 阅读全文
posted @ 2020-06-29 10:05 数据驱动 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 一、List字面量 List 是 Scala 中非常重要的一个数据结构,其与 Array(数组) 非常类似,但是 List 是不可变的,和 Java 中的 List 一样,其底层实现是链表。 scala> val list = List("hadoop", "spark", "storm") lis 阅读全文
posted @ 2020-06-29 10:03 数据驱动 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 一、集合简介 Scala 中拥有多种集合类型,主要分为可变的和不可变的集合两大类: 可变集合: 可以被修改。即可以更改,添加,删除集合中的元素; 不可变集合类:不能被修改。对集合执行更改,添加或删除操作都会返回一个新的集合,而不是修改原来的集合。 二、集合结构 Scala 中的大部分集合类都存在三类 阅读全文
posted @ 2020-06-29 09:56 数据驱动 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 一、定长数组 在 Scala 中,如果你需要一个长度不变的数组,可以使用 Array。但需要注意以下两点: 在 Scala 中使用 (index) 而不是 [index] 来访问数组中的元素,因为访问元素,对于 Scala 来说是方法调用,(index) 相当于执行了 .apply(index) 方 阅读全文
posted @ 2020-06-29 09:52 数据驱动 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 一、条件表达式if Scala 中的 if/else 语法结构与 Java 中的一样,唯一不同的是,Scala 中的 if 表达式是有返回值的。 object ScalaApp extends App { val x = "scala" val result = if (x.length == 5) 阅读全文
posted @ 2020-06-29 09:51 数据驱动 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 一、数据类型 1.1 类型支持 Scala 拥有下表所示的数据类型,其中 Byte、Short、Int、Long 和 Char 类型统称为整数类型,整数类型加上 Float 和 Double 统称为数值类型。Scala 数值类型的取值范围和 Java 对应类型的取值范围相同。 数据类型 描述 Byt 阅读全文
posted @ 2020-06-29 09:48 数据驱动 阅读(774) 评论(0) 推荐(0) 编辑
摘要: 一、Scala简介 1.1 概念 Scala 全称为 Scalable Language,即“可伸缩的语言”,之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长。Scala 是一门综合了面向对象和函数式编程概念的静态类型的编程语言,它运行在标准的 Java 平台上,可以与所有的 Jav 阅读全文
posted @ 2020-06-29 09:42 数据驱动 阅读(497) 评论(0) 推荐(0) 编辑