BigData

平时多流汗,战时少流血!

大数据 ETL 处理工具 Kettle 常用输入输出

不会写代码也能实现爬虫功能(示例实现了爬取雪球数据)

相比现在流行大数据技术,你可能觉得 Kettle 的使用场景太少了,或者没有必要使用这么个玩意儿,查看了下 github kettle 发现最近也有一些更新,另外,对于没有编程经验的数据使用人员,使用非常简单的 Kettle,通过图形界面设计实现做什么业务,无需写代码去实现,就可以做一些实验,比如:抓取网站上的股票数据、外汇信息等等。 Kettle 支持很多种输入和输出格式,包括文本文件,数...

Excel数据模型自动生成Hive建表语句

最近在「空白女侠」公号上看到她回答了大家会困扰的精力问题,比如为什么我(空白女侠)能同时做那么多事情,精力那么充沛?工作中遵循一个真理: 复杂的事情简单化,简单的事情标准化,标准的事情流程化,流程化的事情工具化,工具化的事情自动化,无法自动化的事情外包化。 数据开发过程中,有些过程是可以工具化来提高工作效率,腾出更多的时间和精力去提高自己(摸鱼~) 工具化 在日常数据开发过程中,会经常需要根...

大数据 ETL 处理工具 Kettle 完成一个作业任务

作业流程 什么是作业流程 简单一句话,作业流程,即是对转换流程进行调度,也可以嵌套转换流程和作业流程。 在第二篇中介绍了一些核心概念,已经知道什么是转换等概念,第一篇中通过一个 HelloWorld 级别的实践,快速体验了一把「转换」的流程。 一个作业流程必须包含「START」 组件,可以没有「成功」组件,作业流程中可以嵌套转换流程和作业流程,如下图: 除了调度转换流程还可以做一些其他...

大数据 ETL 处理工具 Kettle 的核心概念

宏观了解 Kettle 上一篇中对 Kettle 进行了简单的介绍,并快速体验了一把 Kettle,完成了「把数据从 CSV 文件复制到 Excel 文件」 HelloWrold 级别的功能。 而在实际工作中,可以使用 Kettle 的图形化的方式定义复杂的 ETL 程序和工作流,如下图就是通过一系列的转换(Transformation) 完成一个作业(Job)流程。 Kettle 核心概...

大数据 ETL 处理工具 Kettle 入门实践

Kettle 简介 ETL(Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程),对于数据开发人员来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种 ETL 工具的使用,必不可少,这里我们要学习的 ETL 工具就是 Kettle。 Kettle 是什么 Kettle 是一款国外开源的 ETL 工具,对商业用户也没有限制,纯 Java 编写,...

数据仓库开发规范

00背景 规范约束是数仓建设的全流程,以及后续的迭代和运维的参照。事实上,数仓规范文档,应该随着架构设计文档,在数仓开发启动之前,分发给所有相关人员,且是所有人都必须严格遵守的约定。 有人会问,没有规范直接开干,行吗?当然可以,在一些临时的短期项目,为了快速出活尽快看到效果,没有必要强制执行规范而影响了效率。但从个人专业素养的角度看,即使项目没有规范,该有的约定俗成的好习惯还是得有的,比如缩...

从0到1,四步搭建高价值指标体系

一、搭建指标体系应该从何开始 着手搭建指标体系前,先思考一下为什么要搭建指标体系。 德国哲学家马克斯·韦伯在谈到人的理性思考时曾提出两个概念:工具理性和价值理性。 工具理性是指,针对确定的目标,找到最有效的做事手段; 价值理性是指,针对要达到的这个目标做价值判断,是要先衡量目标的价值。 工具理性和价值理性只是角度不同,并无深浅或好坏之分,针对搭建指标体系这件事,作为数据分析师,我希望结果...

Uber的数据治理

数据赋能 Uber Uber 通过赋能数十亿打车和快递服务,连接数以百万计的乘客、企业、餐馆、司机和快递员,彻底改变了世界的出行方式。这个庞大的交通平台的核心是大数据和数据科学,它们支撑着 Uber 的所有工作,比如更好的定价和匹配、欺诈检测、降低预计达到时间(ETA)和实验。每天 PB 级的数据被收集和处理,成千上万用户根据这些数据进行分析决策,从而构建 / 改进这些产品。 规模扩展带来...

如何在 Oozie 中创建有依赖的 WorkFlow

原文地址:https://cloud.tencent.com/developer/article/1158324 转载自微信公众号:Hadoop实操 1.文档编写目的 在使用 Hue 创建 WorkFlow 时,单个 WorkFlow 中可以添加多个模块的依赖,使各个模块之间在 WorkFlow 内产生依赖关系,如果对于一个 WorkFlow 被其它多个 WorkFlow 依赖(如:A...

Hive利用宏自定义简短的函数

背景 Hive SQL 代码的可读性一直是个问题哈,因为业务比较复杂,一般情况下写出来的代码也会很冗长,存在重复的逻辑,本篇通过一个工作过程中的示例来优化一下重复逻辑的问题,希望能够写出可读性更好的代码。 重复代码及问题 通过股票代码来判断所属市场,代码片段如下: ..... CASE WHEN substr( a.symbol, 1, 3 ) = '000' THEN '深圳主...

Hive的优化原则

原文链接:https://zhuanlan.zhihu.com/p/174469951 本篇将 Hive 的优化分成三个部分: 第一部分是 SQL 通用语法优化, 第二部分是针对 Hive 所具有的数据倾斜的优化, 第三部分则介绍一些通用性的 Hive 参数设置优化。 一、语法优化 SQL 的语法优化本质上是如何用更少的计算资源干相同的活,基于此延伸出几条原则,这几条原则又拓展出对应...

合理的使用缓存提升接口性能

guava cache 保证线程安全的同时,支持高并发场景

背景 接口优化,在微服务中调用了另一个服务的接口,这个接口提供一个类似词典的基础数据服务,信息更新又不频繁,对实时性要求不高,如果每次直接访问都去调用一次性能很差,而接口的底层还是每次去 DB 捞一次数据(理论上应该对这个接口进行优化,考虑到要怀疑第三方的态度,还是需要这种方法保护自己的服务不要因为依赖外部资源而导致的宕机),所以考虑对这个接口做一个 cache,理论上就可以大幅度提升接口性...

CDH Oozie 邮件配置

通过 Hue 配置工作流 SLA,及时告警

CDH Oozie 邮件配置 准备工作,邮件操作 SMTP 配置 使用微信企业邮箱进行配置,执行测试任务时报错:Encountered an error while sending the email message over SMTP,错误原因是配置 Oozie 邮箱操作 SMTP 身份验证密码时错误,根据文档多次测试没有成功,改为 163 邮箱,一次性配置成功。 网易 163 邮箱...

Hive常用函数一

原文链接:https://www.iteblog.com/archives/2258.html 关系运算 1、等值比较: = 语法:A = B 操作类型:所有基本类型 描述: 如果表达式 A 与表达式 B 相等,则为 TRUE;否则为 FALSE hive> select 1 from iteblog where 1=1; 1 2、不等值比较: <> 语法: A &...

数据仓库之维度模型的核心理念

10分钟简读经典著作 Data Warehouse Toolkit

原文链接:https://www.yejianye.com/2018/05/21/data-warehouse-toolkit/ 背景 简读经典著作 Data Warehouse Toolkit,带着问题去读书可以事半功倍。先说说我(这里的“我”指原文作者)读这本书的背景,在 Glow 我们很重视各类数据的采集,也很喜欢用数据说话。在以前的文章中提过,我们目前用于各类产品分析的 Dash...

数据仓库之分层模型

原文链接:https://blog.csdn.net/gaixiaoyang123/article/details/103904437 (一)写在前面的话 数据仓库中,我们常听到要做分层计算,包括ads、dwd、dws、ads、dim,那为什么要这么区分,有什么意义?今天就来好好讲述一下。 (二)传统意义上的数据分成 在2012年前后,早期的大数据平台是以Hadoop为核心,数据开发也是...

数据仓库之事实表设计

原文链接:https://blog.csdn.net/gaixiaoyang123/article/details/104000982 (一)该如何理解事实表 事实表作为维度建模的另一个核心,是紧贴着业务过程来进行设计和描述的。相对于维度表来说,事实表要大的多,由于承载了具体的业务过程,因而变化也非常大。与维度表不同的是,事实表可以存储维度属性信息。事实表通常有三种分类:事务事实表、快照...

数据仓库之维度建模篇

原文链接:https://blog.csdn.net/mark_wu2000/article/details/82668787 概述 维度建模是一种将数据结构化的逻辑设计方法,它将客观世界划分为度量(事实)和上下文(维度)。度量是常常是以数值形式出现,事实周围有上下文包围着,这种上下文被直观地分成独立的逻辑块,称之为维度。它与实体-关系建模有很大的区别,实体-关系建模是面向应用,遵循第三...

一个完整机器学习项目的实践流程

1 获取语料 已有语料:业务部门、公司积累大量的文本数据 网上下载、抓取语料:可以通过爬虫自己去抓取一些数据,然后进行加工。 2 语料预处理 语料预处理大概会占到整个50%-70%的工作量,通过数据洗清、分词、词性标注、去停用词四个大的方面来完成语料的预处理工作。 a.语料清洗:就是在语料中找到我们感兴趣的东西,把不感兴趣的视为噪音的内容清洗删除,如:对于爬取的网页内容,需要去除广告、标签、...

海量数据去重之SimHash算法简介和应用

使用SimHash进行海量文本去重

源文出处:https://www.cnblogs.com/maybe2030/p/5203186.html 在之前的两篇博文分别介绍了常用的hash方法([Data Structure & Algorithm] Hash那点事儿)以及局部敏感hash算法([Algorithm] 局部敏感哈希算法(Locality Sensitive Hashing)),本文介绍的SimHash是...

Scrapy安装与创建项目

Scrapy爬取静态页面数据

Scrapy 安装 pip install scrapy 以上会报超时错误,所以增加了国内镜像,如下 pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ scrapy 还是会有超时现象,不过重新试一次就自动地把所有相关的包安装成功,最后终端显示如下提示,说明安装成功: Installing collected pac...

Scrapy的初步认识

Scrapy 的初步认识 Scrapy 是一个高级的 Python 爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫获取的数据保存到 csv、json 等文件中。 Scrapy 使用了 Twisted 作为框架,Twisted 是事件驱动的,对于会阻塞线程的操作(访问文件、数据库等),比较适合异步的代码。 Scrapy 整体架构 Scrapy 数据流是由执行的核心引擎(Engine...

Kafka常见问题总结

在使用 Kafka 时,我们经常会遇到的问题有哪些? 会不会丢消息? Offset 怎么保存? Consumer 重复消费问题怎么处理? 如何保证消息的顺序? 数据倾斜怎么处理? 一个 Topic 分配多少个 Partiton 合适以及修改 Partiton有哪些限制? 如何保证消息不丢失? 消息不丢失对于消息队列来说至关重要,但要实现这一点也是非常困难。因为服务器可能会宕机,磁盘可能...

Spark常用算子实践总结

mapPartitions 与 map 的区别 与 map 方法类似,map 是对 rdd 中的每一个元素进行操作,而 mapPartitions(foreachPartition) 则是对 rdd 中的每个分区的迭代器进行操作。如果在 map 过程中需要频繁创建额外的对象,例如将 rdd 中的数据通过 JDBC 连接写入数据库,map 需要为每个元素创建一个 Connection 链接,开...

Flume案例——日志分析采集系统

概述 大数据平台每天处理业务系统产生的大量日志数据,一般而言,这些系统需要具有以下特征: 构建业务系统和日志分析系统的桥梁,并将它们之间的关联解耦; 支持近实时的在线分析系统和类似于 Hadoop 之类的离线分析系统; 具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。 日志分析采集系统模块 数据采集模块:负责从各节点上实时采集数据,选用 Flume-NG 来实现。 ...

Flume安装及配置

Flume 提供了大量内置的 Source、Channel 和 Sink 类型。而且不同类型的 Source、Channel 和 Sink 可以自由组合—–组合方式基于配置文件的设置,非常灵活。比如:Channel 可以把事件暂存在内存里,也可以持久化到本地硬盘上。Sink 可以把日志写入 HDFS、HBase,甚至是另外一个 Source 等。 安装 下载源码包到 /usr/loca...

Flume核心概念

简介 Flume 是一个分布式、可靠、高可用的服务,它能够将不同数据源的海量日志数据进行高效收集、汇聚、移动,最后存储到一个中心化数据存储系统(HDFS、 HBase等)中,它是一个轻量级的工具,简单、灵活、容易部署,适应各种方式日志收集并支持 failover 和负载均衡。 功能 支持在日志系统中定制各类数据发送方,用于收集数据。 Flume 提供对数据进行简单处理,并写到各种数据接收方...

Spark编程基础

准备知识 2017-12-19-Hadoop2.0架构及HA集群配置(1) 2017-12-24-Hadoop2.0架构及HA集群配置(2) 2017-12-25-Spark集群搭建 2017-12-29-Hadoop和Spark的异同 2017-12-28-Spark-HelloWorld(Spark开发环境搭建) Spark快速入门 Spark快速入门-1-Spark on Yar...

Kafka进阶

内容为将要在公司分享Kafka的PPT,推荐在wifi环境下阅读 本次分享内容包括 1.Message delivery guarantee 分场景进行可能性的描述 2.Partition的重要性及在什么情况下会Rebalance 3.Kafka Stream介绍 4.运行一下Kafka Stream WordCount的demo ...

Kafka基础知识

如有不当之处请指出,我后续逐步完善更正

Spark快速入门-6-Spark算子的选择

知识点 https://www.cnblogs.com/arachis/p/Spark_API.html 使用reduceByKey/aggregateByKey替代groupByKey 使用mapPartitions替代普通map 使用foreachPartitions替代foreach 使用filter之后进行coalesce操作 使用repartitionAndSortWithinP...

Spark快速入门-5-Spark性能优化指南-高级篇

前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为《Spark性能优化指南》的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题。 数据倾斜调优 调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证S...

Spark快速入门-4-Spark性能优化指南-基础篇

前言 在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。在美团•大众点评,已经有很多同学在各种项目中尝试使用Spark。大多数同学(包括笔者在内),最初开始尝试使用Spark的原因很简单,主要就是为了让大数据计算作业的执行速...

Spark快速入门-3-Spark的算子总结

Spark的算子的分类 Transformation 变换/转换算子:这类算子操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。这种变换并不触发提交作业,完成作业中间过程处理。 Action 行动算子:这类算子会触发 SparkContext 提交 Job 作业,并将数据输出 Spark 系统。 ...

Spark快速入门-2-Spark的编程模型

准备 2017-12-19-Hadoop2.0架构及HA集群配置(1) 2017-12-24-Hadoop2.0架构及HA集群配置(2) 2017-12-25-Spark集群搭建 2017-12-29-Hadoop和Spark的异同 2017-12-28-Spark-HelloWorld(Spark开发环境搭建) 相关概念 2018-01-15-Spark快速入门-1-Spark-on...

Spark快速入门-1-Spark on Yarn Job的执行流程简介

准备 2017-12-19-Hadoop2.0架构及HA集群配置(1) 2017-12-24-Hadoop2架构及HA集群配置(2) 2017-12-25-Spark集群搭建 2017-12-29-Hadoop和Spark的异同 2017-12-28-Spark-HelloWorld(Spark开发环境搭建) 相关概念 在介绍一个典型的 Spark Job 是如何被调度执行前,先了解以...

Scala快速入门-11-常用集合操作

知识点 所有的集合都扩展自Iterable特质 集合有三大类,分别为序列、集和映射 几乎所有集合类,Scala都同时提供了可变和不可变的版本 Scala列表要么是空的,要么拥有一头一尾,其中尾部本身又是一个表列 集是无先后次序的集合 用LinkedHashSet来保留插入顺序,或用SortedSet来按顺序进行迭代 +将元素添加到无先后次序的集合中;+:和:+向前或向后追加到序列;++将两...

Scala快速入门-10-模式匹配与样例类

知识点 mathch表达式是一个更好的switch,不会有穿透到下一个分支的问题 如果没有模式能够匹配,会抛出MatchError,可以用case _ 模式来避免,相当于Java中的default 模式可以包含一个随意定义的条件,称做守卫 可以匹配数组、列表、元组等模式,然后将匹配到不同部分绑定到变量 样例类及密封类的模式匹配 用Option来存放可能存在也可能不存在的值,比null更安全...

Scala快速入门-9-高阶函数

知识点 作为值的函数 创建匿名函数 带函数参数的函数 闭包 柯里化 函数 在Scala中,函数是“头等公民”,可以在变量中存放函数 scala> def fun(msg: String) {println(msg)} fun: (msg: String)Unit scala> val f = fun <console>:8: error: missing a...

Scala快速入门-8-特质

知识点 Scala和Java一样不允许类继承多个超类,特质解决这一局限性 类可以实现任意数量的特质 当将多个特质叠加在一起时,顺序很重要,其方法先被执行的特质排在更后面 Scala特质可以提供方法和字段的实现 特质要求实现它们的类具备特定的字段、方法或超类 特质可以同时拥有抽象方法和具体方法,而类可以实现多个特质 当做接口使用的特质 Scala特质完全可以像Java的接口一样,使用关键...

Scala快速入门-7-继承

知识点 继承类 extends 重写方法时必须用override 只有主构造器可以调用超类的主构造器 重写字段 抽象类、字段 扩展类 使用extends关键字 class Employee extends Person {...} 在子类中定义需要的新字段和方法,或者重写超类的方法 可将类声明为final,这样就不有被扩展 可将单个方法或字段声明为final,确保不能被重写 在上...

Scala快速入门-6-单例对象及伴生对象

知识点 用对象作为单例或存放工具方法,Scala没有静态方法或字段 类可以有一个同名的伴生对象 对象的apply方法通常用来构造伴生类的新实例 Scala的main函数定义 单例对象 Scala没有静态方法或字段,可以用object语法定义结构,对象定义了类的单个实例。 对象的构造器在该对象第一次使用时被调用。 不能提供构造器参数。 作为存放工具函数或常量的地方。 高效地共享单个不可变...

Scala快速入门-5-类定义

知识点 每个类都有一个主构造器,这个构造器和类的定义“交织”在一起,它的参数直接成为类的字段,主构造器执行类体中所有的语句 类中的字段自动带getter和setter方法 用@BeanProperty注解生成JavaBean的getXxx/setXxx方法 辅助构造器是可选的,它们都叫做this 类定义 定义及使用 scala> class Counter { | p...

Scala快速入门-4-常用映射和元组操作

知识点 映射是键值对的集合 n个对象(并不一定要相同类型的对象)的集合,元组 映射 构造一个不可变(默认)映射(构造一个不可变的Map[String, Int],其值不能被改变) scala> val scores = Map("Alice" -> 90, "Bob" -> 88) scores: scala.collecti...

Scala快速入门-3-常用数组操作

知识点 长度固定使用Array,长度有变化使用ArrayBuffer 提供初始值时不要使用new 用()来访问元素 for(elem <- arr)遍历元素 for(elem <- arr if ...) yield ...将原数组转为新数组 定长数组 10个整数的数组,所有元素初始为0 scala> val nums = new Array[Int](10) nu...

Scala快速入门-2-控制结构与函数

条件表达式、循环、for、函数

背景 表达式有值,语句执行动作。 Scala中,几乎所有构造出来的语法结构都有值,不像Java中把表达式和语句(if语句)分为两类。 在这里if表示式有值。 代码块也有值,最后一个表达式就是值。 语句中,分号不是必需的。 函数式中不使用return。 条件表达式 在Scala中if/else表达式有值,这个值就是在if或else之后的表达式的值。 scala> var x = ...

Scala快速入门-1-声明变量

声明变量、常用类型

背景 因为Spark是由Scala开发的,所以在开发Spark应用程序之前要对Scala语言学习。虽然Spark也支持Java、Python语言,但是作为一名Java程序猿,还是决定要学习Scala哈。 Scala是运行在JVM上一门语言。开发效率非常高、语法丰富简洁,三两行Scala代码能搞定Java要写的一大坨代码。 Scala的语法糖太甜~~ Scala特性 面向对象特性 Sca...

Hadoop和Spark的异同

解决问题的层面不一样 Hadoop和Spark两者都是大数据框架,但是各自存在的目的不尽相同。 Hadoop实质上是解决大数据大到无法在一台计算机上进行存储、无法在要求的时间内进行处理的问题,是一个分布式数据基础设施。 HDFS,它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,通过将块保存到多个副本上,提供高可靠的文件存储。 MapReduce,通过简单的Mapper...

IntelliJ-IDEA-Maven-Scala-Spark开发环境搭建

背景 几乎所有编程语言的第一个程序都是 Hello World。 下载并安装JDK、Scala、Maven 之前的Hadoop HA 和 Spark集群的文章中已经安装过JDK、Scala。Maven安装也很简单,略。 下载Idea并安装Scala插件 在线安装有点慢,但网上很多方法解决,略。 创建一个maven-scala工程 按向导一步步填写、下一步。 修改pom.xml文...

Spark集群搭建

背景 基础软件安装 JDK 1.7(之前已经安装过) scala-2.11.4 spark-1.6.0-bin-hadoop2.6 集群ssh免密登录配置(之前已经安装过) 服务器分布及相关说明 由于目前只有3台虚拟机,所以分配如下: 服务器角色/服务器 Master(192.168.111.238) Slave1(192.168.111.239) Slave2(192.168.1...

Hadoop2.0架构及HA集群配置(2)

HA集群配置搭建

背景 在Hadoop2.0中通常由两个NameNode组成,一个处于Active状态,另一个处于Standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步Active NameNode的状态,以便能够在它失败时快速进行切换。 Hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。我们使用...

Hadoop2.0架构及HA集群配置(1)

Hadoop2.0新特性 NameNode HA NameNode Federation HDFS快照 HDFS缓存 HDFS ACL NameNode HA 背景 Hadoop 1.0中NameNode在整个HDFS中只有一个,存在单点故障风险,一旦NameNode挂掉,整个集群无法使用 通过HDFS的高可用性将通过在同一个集群中运行两个NameNode (active NameNo...

Yarn的基本概念与资源调度

Hadoop1.0架构回顾 Hadoop是Apache的一个开源分布式计算平台,以分布式文件系统HDFS,和MapReduce为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。HDFS的高容错性、高伸缩性等优点形成分布式系统;MapReduce分布式编程模型让我们开发并行应用程序。 Hadoop为包含多个子项目的集合,其核心内容是MapReduce和HDFS。主要是通...

Hadoop集群环境搭建

配置虚拟机CentOS 修改IP cd /etc/sysconfig/network-scripts sudo vim ifcfg-eth0 重启服务 sudo /etc/init.d/network restart 两台虚拟机使用相同的网卡,需要重新安装网卡 通过 ifconfig查看,虚拟机使用相同的网卡eth0,所以需要卸载,在vmware设置中移除[网络适配器],...