随笔分类 -  大数据基础

摘要:刚开始,新创建的表预分区:如图所示 然后插入数据 import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; i 阅读全文
posted @ 2020-09-02 11:14 数据驱动 阅读(734) 评论(0) 推荐(0)
摘要:(what)什么是预分区? HBase表在刚刚被创建时,只有1个分区(region),当一个region过大(达到hbase.hregion.max.filesize属性中定义的阈值,默认10GB)时, 表将会进行split,分裂为2个分区。表在进行split的时候,会耗费大量的资源,频繁的分区对H 阅读全文
posted @ 2020-09-02 11:10 数据驱动 阅读(1420) 评论(0) 推荐(0)
摘要:一、前言 Hive默认计算引擎时MR,为了提高计算速度,我们可以改为Tez引擎。至于为什么提高了计算速度,可以参考下图: 用Hive直接编写MR程序,假设有四个有依赖关系的MR作业,上图中,绿色是Reduce Task,云状表示写屏蔽,需要将中间结果持久化写到HDFS。 Tez可以将多个有依赖的作业 阅读全文
posted @ 2020-07-19 15:25 数据驱动 阅读(8901) 评论(0) 推荐(0)
摘要:前言 不进行优化的代码就是耍流氓。 总体来说大数据优化主要分为三点,一是充分利用CPU,二是节省内存,三是减少网络传输。 一、Hive/MapReduce调优 1.1 本地模式 Hive默认采用集群模式进行计算,如果对于小数据量,可以设置为单台机器进行计算,这样可以大大缩减查询触发任务时间。 用户可 阅读全文
posted @ 2020-07-15 23:17 数据驱动 阅读(2415) 评论(0) 推荐(0)
摘要:官网参考 常用命令: hdfs dfs -put text.txt /opt/user/root/text.txt //将文件进行上传(-put 本地路径 hdfs路径) hadoop fs -get /test/test1.har /data/test//将文件下载到本地 (-get hdfs路径 阅读全文
posted @ 2020-07-02 11:31 数据驱动 阅读(322) 评论(0) 推荐(0)
摘要:一、简介 在提交大数据作业到集群上运行时,通常需要先将项目打成 JAR 包。这里以 Maven 为例,常用打包方式如下: 不加任何插件,直接使用 mvn package 打包; 使用 maven-assembly-plugin 插件; 使用 maven-shade-plugin 插件; 使用 mav 阅读全文
posted @ 2020-06-30 10:47 数据驱动 阅读(635) 评论(0) 推荐(0)
摘要:一、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 数据驱动 阅读(1261) 评论(0) 推荐(0)
摘要:一、简介 Azkaban 主要通过界面上传配置文件来进行任务的调度。它有两个重要的概念: Job: 你需要执行的调度任务; Flow:一个获取多个 Job 及它们之间的依赖关系所组成的图表叫做 Flow。 目前 Azkaban 3.x 同时支持 Flow 1.0 和 Flow 2.0,本文主要讲解 阅读全文
posted @ 2020-06-29 16:06 数据驱动 阅读(485) 评论(0) 推荐(0)
摘要:一、Azkaban 源码编译 1.1 下载并解压 Azkaban 在 3.0 版本之后就不提供对应的安装包,需要自己下载源码进行编译。 下载所需版本的源码,Azkaban 的源码托管在 GitHub 上,地址为 https://github.com/azkaban/azkaban 。可以使用 git 阅读全文
posted @ 2020-06-29 15:58 数据驱动 阅读(974) 评论(0) 推荐(0)
摘要:一、Azkaban 介绍 1.1 背景 一个完整的大数据分析系统,必然由很多任务单元 (如数据收集、数据清洗、数据存储、数据分析等) 组成,所有的任务单元及其之间的依赖关系组成了复杂的工作流。复杂的工作流管理涉及到很多问题: 如何定时调度某个任务? 如何在某个任务执行完成后再去执行另一个任务? 如何 阅读全文
posted @ 2020-06-29 15:53 数据驱动 阅读(444) 评论(0) 推荐(0)
摘要:一、隐式转换 1.1 使用隐式转换 隐式转换指的是以 implicit 关键字声明带有单个参数的转换函数,它将值从一种类型转换为另一种类型,以便使用之前类型所没有的功能。示例如下: // 普通人 class Person(val name: String) // 雷神 class Thor(val 阅读全文
posted @ 2020-06-29 10:19 数据驱动 阅读(252) 评论(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 数据驱动 阅读(358) 评论(0) 推荐(0)
摘要:一、模式匹配 Scala 支持模式匹配机制,可以代替 swith 语句、执行类型检查、以及支持析构表达式等。 1.1 更好的swith Scala 不支持 swith,可以使用模式匹配 match...case 语法代替。但是 match 语句与 Java 中的 switch 有以下三点不同: Sc 阅读全文
posted @ 2020-06-29 10:14 数据驱动 阅读(263) 评论(0) 推荐(0)
摘要:一、函数 1.1 函数与方法 Scala 中函数与方法的区别非常小,如果函数作为某个对象的成员,这样的函数被称为方法,否则就是一个正常的函数。 // 定义方法 def multi1(x:Int) = {x * x} // 定义函数 val multi2 = (x: Int) => {x * x} p 阅读全文
posted @ 2020-06-29 10:12 数据驱动 阅读(451) 评论(0) 推荐(0)
摘要:一、继承 1.1 Scala中的继承结构 Scala 中继承关系如下图: Any 是整个继承关系的根节点; AnyRef 包含 Scala Classes 和 Java Classes,等价于 Java 中的 java.lang.Object; AnyVal 是所有值类型的一个标记; Null 是所 阅读全文
posted @ 2020-06-29 10:10 数据驱动 阅读(980) 评论(0) 推荐(0)
摘要:一、初识类和对象 Scala 的类与 Java 的类具有非常多的相似性,示例如下: // 1. 在 scala 中,类不需要用 public 声明,所有的类都具有公共的可见性 class Person { // 2. 声明私有变量,用 var 修饰的变量默认拥有 getter/setter 属性 p 阅读全文
posted @ 2020-06-29 10:07 数据驱动 阅读(302) 评论(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 数据驱动 阅读(259) 评论(0) 推荐(0)
摘要:一、List字面量 List 是 Scala 中非常重要的一个数据结构,其与 Array(数组) 非常类似,但是 List 是不可变的,和 Java 中的 List 一样,其底层实现是链表。 scala> val list = List("hadoop", "spark", "storm") lis 阅读全文
posted @ 2020-06-29 10:03 数据驱动 阅读(351) 评论(0) 推荐(0)
摘要:一、集合简介 Scala 中拥有多种集合类型,主要分为可变的和不可变的集合两大类: 可变集合: 可以被修改。即可以更改,添加,删除集合中的元素; 不可变集合类:不能被修改。对集合执行更改,添加或删除操作都会返回一个新的集合,而不是修改原来的集合。 二、集合结构 Scala 中的大部分集合类都存在三类 阅读全文
posted @ 2020-06-29 09:56 数据驱动 阅读(496) 评论(0) 推荐(0)
摘要:一、定长数组 在 Scala 中,如果你需要一个长度不变的数组,可以使用 Array。但需要注意以下两点: 在 Scala 中使用 (index) 而不是 [index] 来访问数组中的元素,因为访问元素,对于 Scala 来说是方法调用,(index) 相当于执行了 .apply(index) 方 阅读全文
posted @ 2020-06-29 09:52 数据驱动 阅读(208) 评论(0) 推荐(0)