
BigData
文章平均质量分 77
Hadoop、HDFS、Flume、Scala、Spark、Hive...
JOEL-T99
Try my best!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Hive 日期函数
语法格式: 返回类型:函数描述:以秒为单位获取当前时区的 Unix 时间戳。1.2 源中检索语法格式: 返回类型:函数描述: 从源中检索诸如天或小时之类的字段。源必须是日期、时间戳、间隔或可以转换为日期或时间戳的字符串。支持的字段包括:日、星期几、小时、分钟、月、季度、秒、周和年。1.3 获取当前日期语法格式: 返回类型:函数描述: 返回当前日期。1.4 获取当前时间戳语法格式: 返回类型:函数描述: 返回当前时间戳。1.5 日期当月最后一天语法格式: 返回类型:函数描述: 返回日期所属月份原创 2022-06-04 17:22:07 · 3698 阅读 · 2 评论 -
数仓理论及建模方法
1. 数仓概述数据仓库: 数据仓库是一个面向主题的、集成的、非易失的、随时间变化的数据集合。重要用于组织积累的历史数据,并且使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能。面向主题:为数据分析提供服务,根据主题将原始数据集合在一起。集成的:原始数据来源于不同的数据源,要整合成最终数据,需要经过 ETL(抽取、清洗、转换)的过程。非易失:保存的数据是一系列历史快照,不允许被修改,只允许通过工具进行查询、分析。时变性:数仓会定期接收、集成新的原创 2022-02-19 17:20:10 · 10901 阅读 · 0 评论 -
HBase Hive集成使用
1. HBase 与 HiveHBase: Hadoop database 的简称,是一种 NoSQL 数据库,主要适用于海量明细数据(十亿、百亿)的随机实时存储与查询,如日志明细、交易清单、轨迹行为等Hive: Hadoop 的数据仓库,通过 HQL 来处理和计算 HDFS 的数据,HQL 将转化为 Mapreduce 来处理数据,适用于离线的批量数据计算。二者关系: Hive 对 HDFS 上的数据进行清洗、处理和计算后,可将用于海量数据随机查询的查询的数据存入 HBase。Hive 相当于原创 2022-01-04 21:04:15 · 1436 阅读 · 3 评论 -
HBase JavaAPI
1. DDLstatic Connection conn = null;static Admin admin = null;/** * 初始化连接对象 * @throws IOException */@Beforepublic void init() throws IOException { Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "node1,原创 2022-01-04 16:08:24 · 875 阅读 · 0 评论 -
HBase 相关过程
HBase 写入数据三个阶段:第一阶段:当 Client 提交 put(增删改)请求后,Hbase 客户端会根据写入的表以及 rowkey 在 Meta Cache 进行查找,如果找到该 rowkey 所在的 RegionServer 以及 Region,就直接进入到第三阶段;如果客户端中没有找到 rowkey 的相关信息,就需要访问 Zookeeper 上的 /hbase/meta-region-server 节点,查找 Habse 元数据所在的 RegionServer。第二阶段:向 hbas原创 2022-01-02 22:54:57 · 1078 阅读 · 0 评论 -
SparkStreaming 采集器
自定义采集器自定义采集器实现步骤:继承 Receiver 类实现集中 onStart()、onStop() 方法实例化自定义类// 自定义 Receiver 类class MyReceiver extends Receiver[String](StorageLevel.MEMORY_ONLY) { private var flag = true private var massage = "" // 开始方法 override def onStart():原创 2021-12-31 16:45:27 · 319 阅读 · 0 评论 -
Kafka 生产者与消费者
1. 生产者1.1 分区策略分区的原因:方便在集群中扩展:每个 Topic 可动态的调整 Partition 的数量以适应整个集群提高并发:能够以 Partition 为单位进行读写分区的原则:命令行中新建 Topic 时,可设置分区的数量在 API 中,使用 Producer 发送的数据被封装成一个 ProducerRecord 对象。指明 Partition 的而情况下,将指明的值作为 Partition 值;未指明 Partition,但存在 key 的情况下,将 key原创 2021-12-30 21:35:24 · 1199 阅读 · 0 评论 -
Kafka 初识+安装
1. Kafka1.1 Kafka 是什么Kafka 是一个分布式的基于发布/订阅模式的分布式消息队列(Massage Queue),具有高性能、持久化、多副本备份、横向扩展能力,主要应用于大数据实时处理领域。1.2 消息队列模式1.2.1 点对点通信在点对点系统中,消息生产者生产的消息被保留在 Queue 中, 一个或多个消费者可以从 Queue 中取出并消费的消息,但是特定消息只能由最多一个消费者消费。 一旦消费者读取 Queue 中的消息,它就从该 Queue 中清除。1.2.2 发布/订原创 2021-12-28 10:19:50 · 271 阅读 · 0 评论 -
Zookeeper 客户端操作
1. 客户端命令行操作1.1 基本语法命令说明help显示所有操作命令ls path查看当前节点的子节点(可监听)-w 监听子节点变化-s 附加次级信息create创建普通节点-s 含有序列-e 临时(重启或者超时消失)get path获得指定路径下节点的值(可监听)-w 监听节点内容的变化-s 附加次级信息set设置节点的具体信息stat查看节点状态delete删除节点deleteall递归删除节点1.2 节点类型持原创 2021-12-25 16:26:36 · 1402 阅读 · 1 评论 -
SparkSQL 实战一
1. 数据准备1.1 数据说明???? 数据集见文末!数据集为活品交易数据集,每个订单可能包含多个货品,每个订单可以产生多次交易,不同的货品有不同的单价,表结构如下图:1.2 案例类准备case class tbDate (dateid:String, years:Int, theyear:Int, month:Int, day:Int, weekday:Int, week:Int, quarter:Int, period:Int, halfmonth:Int) extends Seria原创 2021-12-24 11:11:24 · 1112 阅读 · 1 评论 -
SparkSQL 自定义函数
1. UDF在 Hive 中,我们实现的 UDF 必须将方法命名为 evaluate ,而 Spark SQL 中却没有这么无理的要求,我们可以根据所需随意自定义函数。语法格式:spark.udf.register(函数名,函数体)???? 将日期变化格式:原数据 birthday.txt 预览:Michael, 2020/Nov/12 15:34:56Andy, 2020/Dec/05 17:27:38Justin, 2020/Dec/27 22:48:23程序实现:def mai原创 2021-12-22 23:30:12 · 750 阅读 · 0 评论 -
SparkSQL 数据源的加载与保存
Spark SQL 支持通过 DataFrame 接口对多种数据源进行操作。可以使用关系转换对 DataFrame 进行操作,也可以用于创建临时视图。将 DataFrame 注册为临时视图允许对其数据运行 SQL 查询。1. 通用的加载/保存功能数据源由它们的完全限定名称(即org.apache.spark.sql.parquet)指定,但对于内置源,可以使用它们的短名称(json、parquet、jdbc、orc、libsvm、csv、text)。从任何数据源类型加载的 DataFrame 都可以.原创 2021-12-22 17:57:31 · 3053 阅读 · 0 评论 -
SparkSQL 核心编程
1. SparkSession1.1 新的起点老版本中,Spark SQL 提供两种 SQL 查询的起点,一个为 SQLContext,用于 Spark 为自己提供的 SQL 查询;另一个为 HiveContext,用于连接 Hive 查询,SparkSession 是 SparkSQL 查询的新起点。实际上是 SQLContext、HiveContext 的组合,所以在 SQLContext 和 HiveContext 上可用的 API 在 SparkSession 上同样是可以使用的。SparkSe原创 2021-12-22 15:13:56 · 1007 阅读 · 0 评论 -
SparkSQL 初识
1. Spark SQL 初识1.1 Spark SQL 是什么Spark SQL 是 Apache Spark 的用于处理结构化数据(Structured Data)的模块。1.2 Spark SQL 特点集成: Spark 程序可实现与 SQL 查询的无缝对接。我们可以通过 Java、Scala、Python 或 R 语言利用 Spark SQL 将结构化数据作为 Spark 中的弹性分布式数据集(RDD)进行查询。统一的数据访问: DataFrames 和 SQL 提供了访问各种数据源的通用原创 2021-12-21 22:35:11 · 1349 阅读 · 0 评论 -
Hive 函数
1. 函数1.1 系统内置函数查看系统内置函数show functions;查看某一自带函数的描述desc function upper;查看某一自带函数的详细描述desc function extended upper;1.2 常用的内置函数数据准备:create table stu_fun( id int, name string, class string, sex string, skill string, sc原创 2021-12-17 22:53:44 · 1009 阅读 · 0 评论 -
Hive 分区表、分桶表
1. 分区分区表对应对应于 HDFS 上的单独文件,该文件加下是该分区的所有数据,分区相当与多级目录,通过 where 条件可实现不同分区的数据查询操作。1.1 分区表操作创建单级分区表create external table weblog00 (line string)partitioned by (dt string);???? 加载在数据到分区表load data local inpath '/root/weblogs/access.log-20211101' into ta原创 2021-12-16 23:43:39 · 1106 阅读 · 0 评论 -
Hive DML
2. DMLDML(Data Manipulation Language):数据库操作语言2.1 数据导入准备一张表:create table if not exists stu01( id int, name string) row format delimited fields terminated by '\t';准备一份数据 students.txt1001 student011002 student021003 student031004 stu原创 2021-12-16 17:10:06 · 580 阅读 · 0 评论 -
Hive 体系架构
Hive 为C/S模式,其体系架构如下:HiveHive 使用的数据在 HDFS 中,Hive 的 HQL 将转为 MR、Tez 或 Spark 后,在 Hadoop 集群上运行。Hive 的三种运行模式:内嵌模式、本地模式、远程模式。内嵌模式(Local/Embedded Metastore Database(Derby)):该模式一般用来练手和测试使用,Hive 在运行时会在部署目录色生成一个 Derby 文件和一个 metastore_db 目录。本地模式(Local/Embedded M原创 2021-12-16 00:23:05 · 6316 阅读 · 0 评论 -
Hive DDL
1. DDLDDL:数据库定义语言1.1 创建数据库创建数据库create database hive_test01;create database if not exists hive_test01;⚠️ hive 的根目录在 /user/hive/warehouse ,所以创建数据库时,默认在该目录下!在指定的HDFS路径下创建数据库create database hdfs_t01 location "/hdfs_t01";1.2 查询数据库显示数据库show datab原创 2021-12-15 17:55:01 · 1028 阅读 · 0 评论 -
Hive 使用JDBC访问Hive
JDBC 方式访问 Hive1️⃣ 修改 HDFS 的访问权限,在 Hadoop 下的 core-set.xml 添加如下配置:<property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value></property><property> <name>hadoop.proxyuser.root.groups<原创 2021-12-15 15:06:19 · 1035 阅读 · 0 评论 -
Hive 初识+环境搭建
1. Hive1.1 Hive 是什么Hive 是基于 Hadoop 的一个数据仓库工具,用于解决海量结构化数据的统计,可以将结构化的数据映射为一张数据库表,并提供类SQL查询功能本质:Hive 将 HQL(Hive Query Language)转换为 MapReduce 程序!1.2 Hive 特点可扩展:Hive 可自由的扩展到集群的规模,一般不用重启服务延展性:Hive 支持自定义函数,用户可以根据自己的需区来实现自己的函数容错性:Hive 具备良好的容错性,节点出现问题 SQL原创 2021-12-14 18:02:01 · 1150 阅读 · 1 评论 -
Spark 累加器、广播变量
1. 累加器Apache Spark 使用共享变量。当驱动程序向集群执行器发送任务时,集群的每个节点都会收到一份共享变量的副本。如果我们想实现向 MapReduce 上的计数器,显然是不可以的;如果我们想要更新这些副本的值,也无法影响驱动器的对中应变量。Apache Spark 支持两种基本类型的共享变量——累加器和广播。当我们想要对数据进行关联操作时,可以使用累加器。累加器通过关联和交互操作,可实现计数、求和或求平均的功能。累加器有两个实现类:LongAccumulator :用于计算64位整数原创 2021-12-14 15:13:21 · 500 阅读 · 0 评论 -
Scala 隐式转换
隐式转换:在 Scala 编译器进行类型匹配时,如果找不到合适的类型就会编译失败,此时会在当前的环境中自动推导出合适的类型,从而完成编译。在有些包含 by 的 Spark 算子中,其源码通常用 implicit 修饰某参数,implicit 指的就是隐式的意思。隐式转换的作用:简化编程,调用方法时,不需要向隐式参数传参,Scala 会自动在其作用域范围内寻找隐式值,并自动传入。通过隐式转换,可以在不改变代码的情况下,扩展某个类的功能。发生隐式转换的例子:当方法中的参数与实际类型不一致时当调用类原创 2021-12-13 16:51:17 · 688 阅读 · 0 评论 -
Spark RDD-Operations
1. RDD TransformationsTransformation描述map(func)对原RDD中的元素进行一一映射,返回新的RDDfilter(func)对原RDD过滤,当 func 为 true 时则保留该元素,返回新的RDDflatMap(func)扁平化(降维)的 map,每个参数可映射到多个输出项,返回新的RDDmapPartitions(func)对每个分区的数据单独进行 map,func 必须是 Iterator<T> =&g原创 2021-12-10 16:25:48 · 688 阅读 · 0 评论 -
Spark 架构及运行流程
1. Spark 架构Spark 遵循主从架构,即集群中由一个主服务器和若干个从服务器组成。Spark 架构基于两个抽象:RDD:弹性分布式数据集DAG:有向无环图1.1 Spark 运行架构Spark 运行架构中包括:集群资源管理器(Cluster Manager)Spark 驱动节点(Driver)若干个工作节点(Worker Node)1.2 Spark 组件???? Application:Spark Application 包含了一个 Driver 及多个 Exe原创 2021-12-09 20:23:07 · 5239 阅读 · 0 评论 -
Spark 提交第一个项目(WordCount)
WordCount 的具体步骤可参考上一篇:Spark 第一个项目(WordCount)本篇可作为上一篇的扩展!上一篇程序:WorkCount本篇程序:WorkCountApplication1. WordCount1.1 修改程序对上一篇的程序进行修改:package wcApplicationimport org.apache.spark.{SparkConf, SparkContext}object WorkCountApplication { def main(a.原创 2021-12-09 16:42:35 · 1101 阅读 · 0 评论 -
Spark RDD(弹性分布式数据集)
1. RDD1.1 RDD 是什么RDD(Resilient Distributed Dataset):弹性分布式数据集,是 Spark 对数据集的抽象,代表一个只读、不可变、可分区、其中元素可进行并行计算的集合,并且是可跨越集群节点进行并行操作的有容错机制的集合。RDD 是通过 Hadoop 文件系统(HDFS)中文件或者驱动程序中现有的 Scala 集合开始,然后对其进行转换来创建的。1.2 RDD 特性A list of partitionsRDD 是一个包含多个分区的列表原创 2021-12-09 00:07:17 · 955 阅读 · 0 评论 -
Spark 第一个项目(WordCount)
Spark 由 Scala 语言开发,所以同样可以在本地环境学习 Spark,搭建 Spark 环境,可参考:Spark 初识+环境搭建学习 Spark 之前,还是要完成 Scala 的环境搭建,可参考:Scala 初识+环境搭建本文用到的部分算子(方法)可在 Scala 常用算子 中找到使用方法。版本说明:JDK:1.8Maven:3.8.2Scala:2.12.15Spark:3.1.2创建Maven项目搭建 Maven 环境,可参考:无!(???? 忘了写了,自行搜索吧 )1原创 2021-12-08 23:04:25 · 811 阅读 · 0 评论 -
Scala 模式匹配
模式匹配模式匹配:是一种根据模式检查值的机制。模式匹配类似于 Java 的 swith case语法格式模式匹配中,使用 match 关键字进行声明,每个分支采用 case 关键字进行声明,当需要匹配时,就从第一个分支开始匹配,如果匹配成功,则执行对应分支的代码,如果匹配都不成功,则会执行最后的默认分支。import scala.util.Randomval x: Int = Random.nextInt(10)var res = x match { case 0 =>原创 2021-12-08 18:11:30 · 214 阅读 · 0 评论 -
Scala case class
case classcase class:案例类,具有常规类的所有功能,是为函数式编程提供支持的 Scala 特性。case class 的特性如下:案例类中所有的主构造器中所有的参数默认使用 val 修饰,作为类的成员属性。案例类编译时会自动添加伴生对象以及去全参的 apply 方法,用于类的构造。案例类编译时会自动添加伴生对象以及去全参的 unapply 方法(提取器),用于通过 match 表达式进行模式匹配。案例类编译时会自动重写 toString 方法,便于对象的打印,格式为 类名(原创 2021-12-08 18:10:53 · 1252 阅读 · 0 评论 -
Spark 初识+环境搭建
2. 环境搭建版本说明:Linux: CentOS-7Hadoop: Hadoop-2.7.7JDK: jdk1.81️⃣ Step1:下载压缩包官网下载地址:https://spark.apache.org/downloads.html2️⃣ Step2:上传压缩包至服务器,并解压。tar -zxvf xxxx3️⃣ Step3:配置 spark-envs.sh 配置文件。1、进入到 Spark 解压后的目录内,进入到 conf 目录中。2、将 spark-env.sh.te原创 2021-12-07 20:46:45 · 487 阅读 · 0 评论 -
Scala 常用算子
算子 ⭐️var list = List(1, 2, 3, 4, 5)// 1. head headOptionvar head = list.headprintln(head) // 输出:1var headOption = list.headOptionprintln(headOption) // 输出:Some(1)// 2. last lastOptionvar last = list.lastprintln(last) // 输出:5var lastOption原创 2021-12-07 15:58:50 · 2767 阅读 · 0 评论 -
Scala 操作符及算子
操作符操作符描述适配类型coll :+ elemelem +: coll将 elem 被追加到尾部或头部,并与 coll 类型相同的集合Seqcoll + elemcoll + (e1, e2, ...)添加了给定元素,并与 coll 类型相同的集合Set、Mapcoll - elemcoll - (e1, e2, ...)将给定的元素移除,并与 coll 类型相同的集合Set、Map、ArrayBuffercoll ++ coll2col2 ++: c原创 2021-12-07 10:44:24 · 237 阅读 · 0 评论 -
Scala、Java 50道编程题
⚠️ 不保证题解的正确性!1、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?def main(args: Array[String]): Unit = { var x = 30 val arr = new Array[Int](x) arr(0) = 1 ; arr(1) = 1 for(i <- 2 to x-1){ arr(i) = arr(i-1) + ar.原创 2021-12-07 00:24:34 · 3803 阅读 · 1 评论 -
Scala Tuple(元组)
Tuple在 Scala 中,Tuple(元组)是一个包含固定数量元素的值,Tuple 可以理解为一个容器,可以存放各种相同类型或不同类型的数据。Tuple 是不可变的!Tuple 中最多能容纳22个元素。对偶: 包含两个元素的 Tuple,又称为二元组,刚好第一个元素可以作为 K 第二个元素作为 V 。创建 Tuple:创建具有两个元素的元组(二元组)// 方式一:var tuple1 = "a" -> "b"println(tuple1) // 输出: (a,b)// 方式原创 2021-12-03 18:08:18 · 1292 阅读 · 0 评论 -
Scala 数据结构与集合
1. 数据结构概述1.1 数据结构(Data Structure)数据结构讨论在抽象层面上,一组具有一定关系的数据元素的存储及处理。需要了解:数据元素之间逻辑关系的分类,每种逻辑关系对应的操作每种逻辑关系在计算机内部的存储模式对于每种存储模式和操作的实现过程1.2 逻辑结构(Logical Structure)描述数据元素之间的逻辑关系,是数据结构研究的子范畴逻辑结构分为线性结构、树状结构、集合结构、图状结构数据结构研究并给出每种逻辑结构处理办法1.2.1 线性结构(Linear原创 2021-12-03 17:20:22 · 754 阅读 · 0 评论 -
Scala 流程控制
1. if else1.1 单分支语法结构:if (expr) { expr为 true 时执行的语句}1.2 双分支语法结构:if (expr) { expr为 true 时执行的语句} else { expr为 false 时执行的语句}1.3 多分支语法结构:if (expr1) { expr1为 true 时执行的语句} else if (expr2) { expr2为 true 时执行的语句} ...else {原创 2021-12-02 22:22:59 · 404 阅读 · 0 评论 -
Scala 异常处理
Scala 异常处理Scala 的异常处理与 Java 中类似,使用 throw 关键字主动抛出异常,使用 try-catch-finall 进行异常处理,Scala 提供异常处理机制用于终止程序运行和错误提示。Scala 没有“受检”异常,我们不需要声明函数的或者方法可能抛出异常的异常类型受检异常在编译器中被检测,Java 必须声明方法所会抛出的异常类型。def main(args: Array[String]): Unit = { var reader: FileReader =原创 2021-12-02 00:09:55 · 498 阅读 · 0 评论 -
Scala Option
OptionScala 为单个对象提供了包装类,表示可能存在也可能不存在的值。为了避免空指针,在有可能为空的情况下,设计了一个 option 类型用代替直接取值。当使用 get 方法时,返回最值为 Option[Int] 类型。Option 有两个子类:None 返回值不存在时,返回一个 None对象Some 返回值存在时,将返回值放在 Some 中,取值时可以使用 get 方法object Scala11_Option { def main(args: Array[String原创 2021-12-01 23:42:17 · 247 阅读 · 0 评论 -
Scala apply、update 方法
Apply 方法定义在 object 中名为 apply 的一系列方法在调用时,可以直接使用 对象名(参数) 的形式完成调用。在伴生对象中定义 apply 方法,可实现不使用 new 关键字创建对象。使用 new 关键字创建对象时,调用的其实是类的构造方法,当直接使用类名创建对象时,调用的其实是伴生对象的 apply 方法。案例:object DateUtils { def apply(time: Long) ={ val format = new SimpleDat原创 2021-12-01 22:55:09 · 370 阅读 · 0 评论