- 博客(59)
- 资源 (8)
- 收藏
- 关注
原创 常见维度设计
在设计大维表时,应该遵循数据仓库设计的一些基本原则,如遵循维度建模,使用正确的数据类型和数据结构(Int, Long, Varchar),设计合适的索引,进行性能优化等。此外,技术层面的处理方式主要包括:关联字段建立索引,建分区,表压缩,列存储等,以优化大维表的存储和查询性能。与其为每个标识或属性定义不同的维度,不如建立单独的将不同维度合并到一起的杂项维度。桥接表的方式适用于多值能够在逻辑(或事实)上隶属于一个组(值)的场景,新增列的方式则适用于值数固定的场景,各有优劣,设计时按需选用。
2023-05-09 16:57:37
506
原创 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
3639
原创 PySpark coding
记录一些pyspark的简单程序......WordCount读取hdfs文件,wc:from pyspark import SparkContext, SparkConf"""Pyspark Word Count Demo"""def sorted_all_result(wc_rdd): """ WordCount取全量,collect()之后排序 :param wc_rdd: RDD :return: """ word_list
2022-01-09 17:10:06
573
原创 一些算法编程题
记录一些刷过的题目。。。反转链表public class ReverseListDemo { public static void main(String[] args) { ListNode node1 = new ListNode(1, null); ListNode node2 = new ListNode(2, node1); ListNode node3 = new ListNode(3, node2); Solu
2021-11-28 16:47:33
140
原创 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
1113
原创 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
2808
原创 使用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
4179
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
696
原创 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
2727
原创 Java NIO
FileChannel读取文件public class Main { public static void main(String[] args) throws Exception { // 获取文件,"r"为只读模式 RandomAccessFile file = new RandomAccessFile("D:/data/data.txt", "r"); // 获取文件通道 FileChannel channel = fi
2021-08-14 12:29:13
122
原创 commons-cli的简单使用
首先需要说明,在1.3版本之前,主要使用的是BasicParser类,根据源码文档说明,它只是对抽象类Parser的简单实现,功能有限。自1.3版本之后,我们改用DefaultParser类。就使用者在编码方面而言,基本没有区别,下面进行演示:首先在pom.xml中引入依赖:<dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli</arti.
2021-08-07 22:23:19
1005
原创 记录关于log4j的一次纠结
首先说明,copy是一把双刃剑,日常工作中“抄”得好会极大的提升工作效率,但如果只是一味的享受随之带来的快餐文化,会让我们变得非常混沌,从而在追求进步的路上原地打转
2021-06-18 15:24:16
205
1
原创 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
170
原创 Maven項目添加本地jar包
在pom.xml文件中添加: <dependency> <groupId>com.baich</groupId> <artifactId>demo</artifactId> <systemPath>${project.basedir}/src/main/resources/lib/demo-1.0-SNAPSHOT.jar</systemP
2021-05-31 21:40:58
215
原创 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
1020
原创 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
475
原创 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
902
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
997
原创 Flink1.12使用KeyedProcessFunction实现温度监控(案例一)
最近在哔站学习武老师Flink的教程,受益匪浅。其中关于Flink的一些案例,非常有意思,故记录下来。分享给感兴趣的朋友。本次案例的场景是:假设有n个传感器,其温度值被记录下并灌到Kafka的主题里。我们需要读取这些数据并分析之,在10s内如果该温度值持续上升,则抛出警告信息。实现方式:因为要在“指定时间内”温度“持续上升”,需要获取上下文状态,且需包含一个定时器的功能去指定一段时间,因此考虑到使用ProcessFunction,而因为要对n个传感器进行分组处理,所以考虑使用KeyedProc.
2021-03-16 17:01:03
1887
1
原创 Flink1.12 使用WatermarkStrategy生成时间戳
Flink1.12版本后建议使用assignTimestampsAndWatermarks(WatermarkStrategy)的方式生成watermark,之前使用的assignTimestampsAndWatermarks(AssignerWithPunctuatedWatermarks)以及assignTimestampsAndWatermarks(timestampAndWatermarkAssigner)均不再被推荐使用,这里是根据官网给出的小例子,仅供参考:package demo;i
2021-03-05 11:21:46
5119
原创 Flink DataStream支持的物理分组方式
KeyBy上游算子按键分组发送给下游算子global上游算子将所有记录发送到下游算子的第一个实例broadcast上游算子将每条记录广播发送给下游算子的所有实例forward仅适用于上游算子实例数与下游算子数相同时的情况:每个上游算子实例将记录发送给下游算子对应的实例shuffle上游算子随机选择一个下游算子发送记录rebalance上游算子通过轮询的方式发送数据rescale假设上游和下游算子的实例数分别为n和m,若n < m,则每个上游实例向ceil(m/n)
2021-02-24 11:13:53
463
原创 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
760
原创 找不到msvcr120.dll
缺msvcr120.dll的,多半可能是缺Visual C++ Redistributable Packages for Visual Studio 2013了(或者也有可能是损坏了等原因)。到官网下载地址下载一个手动装上就好了。
2020-12-22 16:04:02
193
翻译 HDFS 快照
概述HDFS 快照(Snapshots)是文件系统在特定时间点生成的只读备份。快照可以在文件系统的一个子分支或整个文件系统上生成。快照的常见使用场景就是数据的备份,以达到容错容灾的目的。快照的创建是瞬时的:复杂度为O(1)(不包含inode查找时间)。 仅当对快照进行修改时才使用额外的内存:内存使用空间复杂度是O(M),其中M是修改的文件/目录的数量。 DataNode里的数据块不会被复制:快照文件只对数据块,数据块的大小进行记录,不产生数据复制。 快照不会对常规HDFS操作产生负面影响:修改
2020-12-22 15:52:58
502
翻译 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
215
2
翻译 DistCp
目录前言常用命令选项更新和覆盖不同HDFS版本间的复制MapReduce和副效应前言DistCp即distributed copy,分布式复制的意思,是集群间用于处理高I/O复制的工具。其底层基于MapReduce,因此具有分布式的能力,容错性以及对异常的监控和上报能力。它将文件和目录列表展开到映射任务的输入中,每个任务将复制源列表中指定文件的一个分区。本文的目的是描述新的DistCp的设计、它的新特性、它们的最佳使用以及与遗留实现的任何偏差。常用命令DistCp
2020-12-18 15:31:40
1043
翻译 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
218
翻译 搭建一个Hadoop集群
1. 目的本篇将详细介绍如何在几个节点乃至成百上千个节点上搭建和配置Hadoop集群。还未接触过Hadoop的朋友可参考上一篇博文的介绍,先尝试部署和使用单节点Hadoop。
2020-12-11 15:17:07
220
翻译 搭建一个单节点的Hadoop
1. 前言欢迎来到小可的Hadoop专栏,作为一个曾经的“四级狗”,在下定决心逐字逐句硬啃Apache Hadoop官方文档时,身心是处于“颤抖模式”的。忐忑不安也好,诚惶诚恐也罢,我还是决定出发了!记得刚入行大数据的时候,没有同行,没有良师,只有一个益友在远程遥控和打气。那是最艰难的日子--没有任何基础,Linux稀烂,搭建一个Hadoop伪分布式集群都花了半个月;Java稀烂,看懂一个word count程序要耗上半天时间;SQL稀烂,明明跟着教程都能理解各种JOIN,一到自己写就只会SELECT
2020-12-09 17:20:36
759
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
1182
原创 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
12268
8
原创 在CentOS7下安装Oracle 12C
1、虚拟机配置(网络、关闭防火墙等)2、安装oracle依赖包:yum -y install binutils compat-libstdc++ compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel glibc-headers ksh libaio-devel libstdc++-devel make sysstat...
2020-02-24 14:26:01
385
原创 Java IO流小记
一直想归纳总结下Java的IO流。利用空闲时间写一点儿,后面再找时间补充吧。1、分类 按流向:输入流(读取数据),输出流(写出数据) 按数据类型:字节流,字符流 综上,有以下几大类: 字节输入流(读取数据)--- InputStream 字节输出流(写出数据)--- OutputStream 字符输入流(读取数据)--- Reade...
2020-02-20 16:15:28
209
原创 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
171
原创 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
1726
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人