
大数据
文章平均质量分 52
主要记录日常工作中接触到并经过亲身使用、实践然后研究、整理出的大数据技术。
柏舟飞流
山野村夫,少求学于江城,一无所长,性沉闷,好编码自娱.
展开
-
Flink DataStream API编程
消费Kafkaimport org.apache.flink.api.common.eventtime.WatermarkStrategy;import org.apache.flink.api.common.serialization.SimpleStringSchema;import org.apache.flink.connector.kafka.source.KafkaSource;import org.apache.flink.connector.kafka.source.enumer原创 2022-03-29 15:44:11 · 3683 阅读 · 0 评论 -
Spark SQL操作Hive表
Spark SQL支持从Hive存储中读写数据。然而,Hive存在很多的依赖,而这些依赖又不包含在默认的各类Spark发型版本中。如果将Hive的依赖放入classpath中,Spark将自动加载它们。值得注意的是,这些依赖必须在所有节点中都存在。因为他们需要通过Hive的序列化和反序列化库(SerDes)来访问存储在Hive中的数据。在Spark中配置Hive,需要将hive-site.xml, core-site.xml, hdfs-site.xml放置到Spark的conf/目录下。需要操作H原创 2021-09-02 22:54:05 · 2959 阅读 · 0 评论 -
Hadoop命令行指南
1. 综述Hadoop及其子模块的命令都遵循着相同的基本结构:用法:shellcommand [SHELL_OPTIONS] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]字段 描述 shellcommand 被调用的模块的命令。比如:调用Hadoop common模块下的命令用hadoop,HDFS用hdfs,YARN用yarn。 SHELL_OPTIONS shell在执行Java程序之前需处理的选原创 2021-09-02 22:54:36 · 1238 阅读 · 0 评论 -
使用Flink读取HBase数据
2021-05-27 23:24:12.296 ERROR 11668 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoSuchFi.原创 2021-09-02 22:46:17 · 4379 阅读 · 4 评论 -
Flink下沉数据到Redis的两种方式
这里使用Flink的DataStream API,数据源则是通过消费Kafka的主题。因此,maven工程中的依赖必须包括:<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.11</artifactId> <version>${flink.version}</version&g...原创 2021-09-02 22:19:29 · 784 阅读 · 0 评论 -
Spark读写Hive
1. 读配置文件的方式根据官网相关章节的说明,为了使spark能够获取到hive, hadoop的相关配置,可将hive-site.xml, core-site.xml, hdfs-site.xml这三个配置文件放到集群的${SPARK_HOME}/conf之下,而我们在项目开发时,maven项目中,则需放到resources目录之下,方便SparkConf实例化对象取到值。由于spark是通过thrift协议连接到hive的metastore服务,因此,在hive-site.xml中应加入如下配置:原创 2021-08-20 00:13:36 · 2815 阅读 · 0 评论 -
HDFS Erasure Coding (纠删码技术)
Hadoop3.0 引入了Erasure Coding (EC, 纠删码技术),根据官网的介绍,使用EC技术可将额外的存储开销控制在不超过50%。存储备份的开销是巨大的,HDFS默认的3x备份机制,使得整个集群将多出200%的存储空间的开销以及其他诸如网络带宽等的开销。然而,对于I/O相对较低的热数据集和cold数据集,在正常操作期间很少访问额外的块副本,仍然消耗与第一个副本相同的资源量。因此,一种自然的改进是使用EC来代替复制,它提供相同级别的容错,但存储空间要少得多。在典型的Erasure Cod.原创 2021-06-09 17:45:38 · 255 阅读 · 0 评论 -
Flink执行图
StreamGraph在Client上生成最初的程序执行逻辑流程,也就是算子之间的前后顺序原创 2021-06-02 23:07:26 · 280 阅读 · 2 评论 -
Spring Boot项目引入hive
项目正好在做,刚好完成这个小功能,所以记录下:材料准备:Spring Boot项目 hadoop集群(伪分布式都可以) hive步骤:在Spring Boot项目 pom中引入所需依赖: <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId>原创 2021-05-26 13:27:57 · 1094 阅读 · 0 评论 -
IDEA运行Flink程序找不到ExecutorFactory
报错信息:Exception in thread "main" java.lang.IllegalStateException: No ExecutorFactory found to execute the application.原因:根据发布记录的描述,flink 1.11.0之后,flink-streaming-java模块不再依赖flink-clients,因此在Idea中运行flink程序时,应显式添加flink-clients模块依赖包。处理办法:pom.xml文件中引原创 2021-05-24 22:09:29 · 541 阅读 · 0 评论 -
Spark RDD.takeOrdered倒序取数
首先观察RDD中takeOrdered的源码,num是取数个数,ord则是一个实现了Ordering特征的隐式参数。scala在调用包含有隐式参数块的方法时,将首先查找可以直接访问的隐式定义和隐式参数,也就是说,当我们在调用takeOrdered(n)时,ord即为Ordering特征的默认实现,观察Ordering源码,以Int类型为例,排序方式为:即为顺序排序。因此,要实现倒序取数很简单,ord传入一个倒序排序的Ordering实现类即可。以下是相关示例代码:import or原创 2021-04-15 11:56:21 · 985 阅读 · 2 评论 -
Flink Table API & SQL 编程
Kafka Table & SQL连接Kafka读写数据的样例代码:首先是依赖,maven项目中需指定: <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-scala_2.11</artifactId> <version>1.12.0原创 2021-03-19 12:37:55 · 1053 阅读 · 0 评论 -
Flink1.12使用KeyedProcessFunction实现温度监控(案例一)
最近在哔站学习武老师Flink的教程,受益匪浅。其中关于Flink的一些案例,非常有意思,故记录下来。分享给感兴趣的朋友。本次案例的场景是:假设有n个传感器,其温度值被记录下并灌到Kafka的主题里。我们需要读取这些数据并分析之,在10s内如果该温度值持续上升,则抛出警告信息。实现方式:因为要在“指定时间内”温度“持续上升”,需要获取上下文状态,且需包含一个定时器的功能去指定一段时间,因此考虑到使用ProcessFunction,而因为要对n个传感器进行分组处理,所以考虑使用KeyedProc.原创 2021-03-16 17:01:03 · 1956 阅读 · 1 评论 -
Flink1.12 使用WatermarkStrategy生成时间戳
Flink1.12版本后建议使用assignTimestampsAndWatermarks(WatermarkStrategy)的方式生成watermark,之前使用的assignTimestampsAndWatermarks(AssignerWithPunctuatedWatermarks)以及assignTimestampsAndWatermarks(timestampAndWatermarkAssigner)均不再被推荐使用,这里是根据官网给出的小例子,仅供参考:package demo;i原创 2021-03-05 11:21:46 · 5447 阅读 · 0 评论 -
Flink DataStream支持的物理分组方式
KeyBy上游算子按键分组发送给下游算子global上游算子将所有记录发送到下游算子的第一个实例broadcast上游算子将每条记录广播发送给下游算子的所有实例forward仅适用于上游算子实例数与下游算子数相同时的情况:每个上游算子实例将记录发送给下游算子对应的实例shuffle上游算子随机选择一个下游算子发送记录rebalance上游算子通过轮询的方式发送数据rescale假设上游和下游算子的实例数分别为n和m,若n < m,则每个上游实例向ceil(m/n)原创 2021-02-24 11:13:53 · 499 阅读 · 0 评论 -
Flink的ValueState接口
根据Flink官方介绍,org.apache.flink.api.common.state.ValueState是一个封装类,类似于java标准库中的AtomicReference和AtomicLong。以下是ValueState的源码,不难看出,它是一个接口,并且继承了一个名为State的接口。/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreemen原创 2021-02-23 11:45:42 · 826 阅读 · 0 评论 -
HDFS 快照
概述HDFS 快照(Snapshots)是文件系统在特定时间点生成的只读备份。快照可以在文件系统的一个子分支或整个文件系统上生成。快照的常见使用场景就是数据的备份,以达到容错容灾的目的。快照的创建是瞬时的:复杂度为O(1)(不包含inode查找时间)。 仅当对快照进行修改时才使用额外的内存:内存使用空间复杂度是O(M),其中M是修改的文件/目录的数量。 DataNode里的数据块不会被复制:快照文件只对数据块,数据块的大小进行记录,不产生数据复制。 快照不会对常规HDFS操作产生负面影响:修改翻译 2020-12-22 15:52:58 · 563 阅读 · 0 评论 -
HDFS Shell指南
前言文件系统的shell包含了各种各样的类linux shell的命令,用户可借助这些命令直接与HDFS或Hadoop支持的其它文件系统进行交互(比如本地文件系统, WebHDFS, S3 FS等等)。调用FS shell的命令为:bin/hadoop fs <args>所有的文件系统shell命令都以路径URI为参数,URI格式:scheme://authority/path。比如对于HDFS来说,这里的scheme即为hdfs,对于本地文件系统,sheme就是file。sc翻译 2020-12-22 14:35:24 · 244 阅读 · 2 评论 -
DistCp
目录前言常用命令选项更新和覆盖不同HDFS版本间的复制MapReduce和副效应前言DistCp即distributed copy,分布式复制的意思,是集群间用于处理高I/O复制的工具。其底层基于MapReduce,因此具有分布式的能力,容错性以及对异常的监控和上报能力。它将文件和目录列表展开到映射任务的输入中,每个任务将复制源列表中指定文件的一个分区。本文的目的是描述新的DistCp的设计、它的新特性、它们的最佳使用以及与遗留实现的任何偏差。常用命令DistCp翻译 2020-12-18 15:31:40 · 1088 阅读 · 0 评论 -
Hadoop Archives
Hadoop archives是一种特殊格式的归档,一个归档往往映射到文件系统的目录,一个Hadoop archive通常是*.har的扩展文件。其映射的目录里面存放着元数据(形式如:_index, _masterindex)和数据(part-*)文件。_index文件指定了归档内各个分块文件的文件名和存放地址。1. 创建归档hadoop archive -archiveName name -p <parent> [-r <replication factor>] <翻译 2020-12-18 10:22:07 · 244 阅读 · 0 评论 -
搭建一个Hadoop集群
1. 目的本篇将详细介绍如何在几个节点乃至成百上千个节点上搭建和配置Hadoop集群。还未接触过Hadoop的朋友可参考上一篇博文的介绍,先尝试部署和使用单节点Hadoop。翻译 2020-12-11 15:17:07 · 268 阅读 · 0 评论 -
搭建一个单节点的Hadoop
1. 前言欢迎来到小可的Hadoop专栏,作为一个曾经的“四级狗”,在下定决心逐字逐句硬啃Apache Hadoop官方文档时,身心是处于“颤抖模式”的。忐忑不安也好,诚惶诚恐也罢,我还是决定出发了!记得刚入行大数据的时候,没有同行,没有良师,只有一个益友在远程遥控和打气。那是最艰难的日子--没有任何基础,Linux稀烂,搭建一个Hadoop伪分布式集群都花了半个月;Java稀烂,看懂一个word count程序要耗上半天时间;SQL稀烂,明明跟着教程都能理解各种JOIN,一到自己写就只会SELECT翻译 2020-12-09 17:20:36 · 813 阅读 · 1 评论 -
Hive array, map, struct类型的使用
1.array1.1 需装载的数据样例此时一个编号对应了多个部门,那么这些部门可以存为一个array。1.2 首先创建表create table t_dept_info(num string,dept array<string>) row format delimited fields terminated by ',' collection items terminated by "|";dept array<string> : 声明了dept字段,类型.原创 2020-12-07 12:58:32 · 1238 阅读 · 0 评论 -
CentOS7下安装ClickHouse遇到的启动和连接问题
按照clickhouse官网的说明进行安装,贴一下:sudo yum install yum-utilssudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPGsudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/clickhouse.reposudo yum install clickhouse-server clickhouse-clie原创 2020-11-17 16:48:42 · 12916 阅读 · 8 评论 -
Java操作hdfs笔记
package day01;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import org.junit.Before;import org.junit.Test;import java.net.URI;import java.util.Iterator;import jav...原创 2020-02-13 10:45:57 · 194 阅读 · 0 评论 -
hadoop运行程序时的常见错误
本文记录了hadoop程序开发完成打jar包到服务器上运行过程中的常见报错信息并提供解决方案:1、运行jar文件的命令: hadoop jar name.jar mainClass args[0] args[1] name.jar -- jar文件名 mainClass -- 要执行的程序main方法所在类,以项目src/为根目录的对应路径,中间以"."连接或直接...原创 2020-02-07 11:16:20 · 1870 阅读 · 0 评论 -
hive的安装和使用
1、安装MySQL 查询以前安装的mysql相关包: rpm -qa | grep mysql 如果以前有安装,但已经不能正常使用或者想重新安装,则先卸载: 输入指令,逐个卸载: rpm -e mysql-community-client-5.6.41-2.el7.x86_64 --nodeps 然后进行安装:...原创 2020-02-02 11:11:06 · 1219 阅读 · 0 评论 -
kafka的安装和简单使用
kafka依赖于zookeeper,是一个分布式的消息缓存系统,其集群中的服务器都叫做broker。kafka有两类客户端,一类叫producer(消息生产者),一类叫做consumer(消息消费者),客户端和broker服务器之间采用tcp协议连接kafka中不同业务系统的消息可以通过topic进行区分,而且每一个消息topic都会被分区,以分担消息读写的负载每一个分区都可以有多个副本,以防止数...原创 2019-12-25 16:06:54 · 198 阅读 · 0 评论