自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 MySQL笔记1

在删除时不能对删除操作的表进行其他的操作,也就是你不能使用应该生成一个临时表的形式

2022-06-02 22:33:32 166 1

原创 学习笔记(MySQL巧妙的排序号)

SELECT e1.first_nameFROM ( SELECT e2.first_name, ( SELECT COUNT(*) FROM employees AS e3 WHERE e3.first_name <= e2.first_name ) AS rowid FROM employees AS e2 ) AS e1WHERE e1.rowid % 2 = 1;可以实现对表记录添加...

2022-05-25 22:04:30 293

原创 transform和foreachRDD

transform算子源码: /** * Return a new DStream in which each RDD is generated by applying a function * on each RDD of 'this' DStream. * 返回一个新的 DStream,其中每个 RDD 是通过对 'this' DStream 的每个 RDD 应用一个函数来生成的。 */ def transform[U: ClassTag](transformFunc

2022-05-22 10:10:02 255

原创 笔记(SQL练习)

SELECT a.date, ROUND(COUNT(b.user_id) * 1.0/COUNT(a.user_id), 3) AS pFROM ( SELECT user_id, MIN(date) AS date FROM login GROUP BY user_id) aLEFT JOIN login bON a.user_id = b.user_idAND b.date = DATE_ADD(a.date,INTERVAL 1 D...

2022-05-21 22:37:13 134

原创 superset使用map地图时出现不显示数据的问题

superset作为一款基于web的免费开源的BI工具,具有强大的可视化数据功能。使用它可以极大的减少了我们进行数据可视化的工作难度。但是最近学习使用时,发现一个不明问题。在绘制地图时,发现数据以ISO_CODE时发现只显示台湾、香港、澳门地区的数据,而改变使用ISO_CODE_3166_2时其他省份都显示,但是又不显示它三个了。这是个什么鬼情况???因为改变了地区编码方式出现了不同数据情况,那么很显然时编码问题。搜索得到可以查看superset的map地区编码文件你的superset安装目录

2022-05-03 18:56:02 1722

原创 spark on yarn提交集群任务出错记录

最近在spark on yarn模式下提交依赖集群运行的打包程序时总是无法运行。最终发现了自己的一些问题所在记录一下。首先,由于之前配置hive on spark模式,在系统环境变量上配置过一个spark_home。结果让我无语的是我没使用这个环境变量配置目录下的spark,因为为了锻炼多种模式搭建spark,所以单独搭建了一个spark on yarn的模式,这个目录和环境变量上的是不同的,就导致一直报错寻找不到hadoop_conf_dir,因为环境变量下的spark没有配置相关的支持yarn的信息

2022-05-03 18:10:59 313

原创 hive学习小笔记(动态分区)

hive分区分为静态分区和动态分区。顾名思义,静态分区需要手动去添加分区信息,而动态分区可根据已有的字段信息来自动实现分区信息。使用动态分区需要提前开启设置--设置动态分区set hive.exec.dynamic.partition=true;--设置动态分区为非严格模式set hive.exec.dynamic.partition.mode=nonstrict;创建一个分区表create table if not exists partition_table1( na

2022-04-22 20:31:56 2602

原创 java小笔记(重写equals)

为什么重写equals?因为java类默认的equals是比较内存地址是否一致,那么比较的将是两个对象是否为同一个。但是这并不符合我们现实比较逻辑,就比如判断学生是否为同一个,如果内存中存在两个变量完全一致(学号,姓名等等信息)的两个对象,这在现实逻辑中就是同一个学生,但是如果不重写equals,那么比较的对象在堆中的地址,因为为两个对象所以地址是不同的,就会造成认为这两个同学不是同一个,很显然有问题出现。重写equals()方法的步骤一般如下:1、先用“==”判断是否相等。2、判断equals

2022-04-22 12:01:26 6860

原创 自定义hive的UDTF函数实现对JSON数组中的JSON对象分离

在我们使用hive进行解析JSON时,虽然有get_json_object函数进行解析,但是功能有限,无法对一个JSON数组进行解析。那么就需要我们自定义一个函数来将数组炸裂开,分成一个个JSON对象去解析。自定义一个类继承org.apache.hadoop.hive.ql.udf.generic.GenericUDF重写 initialize,process方法需要注意的是输出forward必须是一个集合和数组,否则可能会出错。代码:package com.royal.hive.

2022-04-22 11:07:29 2652

原创 时间维度表数据制作(调用API接口)

学习电商数仓搭建时,遇到创建DIM层的时间维度表。这里时间维度表数据是十分固定的(一年一更新),要将这些数据提出出来生成文件以便导入DIM层的时间维度表中。我们可以调用网络上免费的节假日API来实现对数据的整合和统计。具体代码如下:这里建议使用第二种getDate2的API,注意使用第二种时需要你自己去申请app_id和app_secret去替换package com.time;import com.alibaba.fastjson.JSONArray;import com.alib

2022-04-20 16:59:13 825

原创 练题010

这题的难点在于思考不到如何解决计算方法数,联系不到斐波那契数列,想不到使用动态规划。主要就在于思路:从后往前看,到达最后一个台阶n有两种方法1、2,如果走1那么前面就有n-1个台阶有f(n-1)个方法,如果走2那么前面就有n-2个台阶就有f(n-2)个方法。那么依次前推就推出了斐波那契数列,f(n) = f(n-1)+f(n-2)。解决斐波那契数列就使用动态规划。代码:class Solution { public int numWays(int n) { // 0..

2022-04-18 19:36:31 89

转载 hadoop的分布式缓存DistributedCache

分布式缓存就是:Hadoop为MapReduce框架提供的一种分布式缓存机制,它会将需要缓存的文件分发到各个执行任务的子节点的机器中,各个节点可以自行读取本地文件系统上的数据进行处理。不同文件类型的添加方法:job.addArchiveToClassPath(archive); // 缓存jar包到task运行节点的classpath中 job.addFileToClassPath(file); // 缓存普通文件到task运行节点的classpath中 job.addCacheArchive

2022-04-18 17:13:31 467 3

原创 MapReduce自定义bean对象实现序列化接口(Writable)

实现bean对象序列化步骤如下7步。(1)必须实现Writable接口(2)反序列化时,需要反射调用空参构造函数,所以必须有空参构造public FlowBean() { super();}(3)重写序列化方法@Overridepublic void write(DataOutput out) throws IOException { out.writeLong(upFlow); out.writeLong(downFlow); out

2022-04-18 16:26:39 2373

原创 练题009

直接简单粗暴的思路,双重for循环遍历查找。解答前可以单独对特殊情况进行处理,nul、空代码:class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { if (matrix == null || matrix.length == 0 || matrix[0].length == 0) { return false; }..

2022-04-16 16:51:06 151

原创 练题008

重复就考虑使用去重的容器,set和map,但是set不能得到具体是哪个重复值,所以使用map的key不重复的特性代码:class Solution { public int search(int[] nums, int target) { Map<Integer,Integer> n = new HashMap<>(); for (int i = 0; i < nums.length; i++){

2022-04-14 15:01:12 57

原创 练题007

重复的数字,第一反应就是去寻找去重的java容器,这就会考虑到set和map,set直接去重我们时无法得知的,所有这里使用map较好,map的key不能相同。代码:class Solution { public int findRepeatNumber(int[] nums) { Map<Integer,Integer> n = new HashMap<>(); for (int i = 0; i < nums.leng...

2022-04-14 14:47:17 191

原创 练题006

不想复杂,那就是直接遍历进行修改。需要考虑的是使用字符数组存储还是通过StringBuilder可变字符串来存储新的字符串。使用字符数组的话,则需要考虑字符数组的初始化长度,空格改为%20由一变三,最坏的情况就是全部需要变,那么就初始化长度为原字符串的3倍长度,这很明显会大量耗损空间内存。代码:class Solution { public String replaceSpace(String s) { char[] c = new char[s.length(..

2022-04-13 10:29:32 65

原创 SparkSQL实现对mysql数据库的对接

object JDBC { def main(args: Array[String]): Unit = { val sparkSession: SparkSession = SparkSession.builder().config(new SparkConf().setMaster("local[*]").setAppName("mysql-jdbc")).getOrCreate() // 通用的load读取 sparkSession.rea.

2022-04-12 19:39:10 1030

原创 面试题(1~30)

1、HashMap 和 Hashtable 区别2、Java 垃圾回收机制和生命周期3、怎么解决 Kafka 数据丢失的问题4、zookeeper 是如何保证数据一致性的5、hadoop 和 spark 在处理数据时,处理出现内存溢出的方法有哪些?6、java 实现快速排序7、设计微信群发红包数据库表结构(包含表名称、字段名称、类型)8、如何选型:业务场景、性能要求、维护和扩展性、成本、开源活跃度9、Spark如何调优10、Flink和spark的通信框架有什么异同11、Java的代理

2022-04-12 10:04:43 198

原创 面试题(101~130)

101、Spark:原理、部署、优化102、Kafka:读写原理、使用、优化103、hive的外部表104、spark的函数式编程105、线性数据结构和数据结构106、Spark映射,RDD107、java的内存溢出和内存泄漏108、多线程的实现方法109、HashMap、ConcurrentMap和 Hashtable 区别110、Flink Checkpoint 是怎么做的,作用到算子还是chain111、Checkpoint失败了的监控11...

2022-04-12 10:00:44 43

原创 面试题(31~100)

31、phoenix 创建索引的方式及区别32、Flink TaskManager 和 Job Manager 通信33、Flink 双流 join方式34、Flink state 管理和 checkpoint 的流程35、Flink 分层架构36、Flink 窗口37、Flink watermark 如何处理乱序数据38、Flink time39、Flink支持exactly-once 的 sink 和 source40、Flink 提交作业的流程...

2022-04-12 09:59:54 169

原创 面试题(1~30)

1、HashMap 和 Hashtable 区别2、Java 垃圾回收机制和生命周期3、怎么解决 Kafka 数据丢失的问题4、zookeeper 是如何保证数据一致性的5、hadoop 和 spark 在处理数据时,处理出现内存溢出的方法有哪些?6、java 实现快速排序7、设计微信群发红包数据库表结构(包含表名称、字段名称、类型)8、如何选型:业务场景、性能要求、维护和扩展性、成本、开源活跃度9、Spark如何调优10、Flink和spark的通信框架...

2022-04-12 09:58:41 60

原创 练题005

涉及链表节点就很抽象,我们可以画图形象化链表这是初始链表,实现反转的话其实就是将连接节点的next属性指向反转即可如何实现:我们可以使用两个辅助节点prev和curr初始化时prev指向null,curr指向头结点,开始通过这两个节点进行改变next使curr.next = prev这这就实现了next指向的反转,然后将curr和prev向后推,但是这里有一个重要点,当我们改变curr的next时curr和它原先的next关系已经断了,那么无法实现后退,所以要提前将curr的...

2022-04-12 09:53:45 201

原创 练题004

这题较为清晰,倒序问题我们可以考虑到stack栈数据结构的特点,stack的压栈和弹栈可以实现对数据的反转,因此十分明确了解决思路代码:/** * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public int[] reversePrint(ListNode head) { ..

2022-04-12 09:20:55 39

原创 练题003

这个题目思路较为明确,可以通过一个链表来实现。push就是链表添加addpop就使用链表删除remove(list.size() - 1)top就使链表查询get(list.size() - 1)min就将链表进行排序,然后取得最小值代码如下class MinStack { List<Integer> list; // int index = 0; public MinStack() { list = new ArrayL..

2022-04-11 20:15:09 190

原创 练题002

斐波那契数列数学化就是f(n) = f(n-1) + f(n-2)(n = 0是f(n)=0;n = 1时f(n)=1)使用动态规划是最好的方法,循环的同时实时的变动f(n-1) 和 f(n-2)来实现最后需要求得f(n)class Solution { public int fib(int n) { // 首先对初始化的数据直接输出 if (n < 2) return n; // 定义动态变化的变量 int l..

2022-04-11 17:30:18 651

原创 练题001

两个栈实现队列。分析:队列是先进先出,栈是先进后出。先无论怎样实现都需要将数据先存储起来,所以对一个栈进行压栈出栈或者说出队列的实现,先进先出就必须将栈存储的数据倒过来才能通过栈实现,那么很明显要将stack1的数据弹栈到stack2中实现数据倒置倒置弹栈很容易就是实现了数据的先进先出,但是我们需要考虑到数据事先存不存在以及两个栈空栈情况。1)stack1空栈,stack2空栈 ,那么说明没有数据,队列没有数据。可返回-12)stack1有数据,stack2空栈(要么之前的...

2022-04-11 16:34:42 180

原创 SparkSQL自定义UDF函数实现对日志文件的修改

日志文件数据格式:这里我们发现每条信息都有“”冒号的包裹,不利于我们分析,所以我们要对其进行简单的清洗去除冒号UDF函数是对数据进行一进一出的操作,所以自定义UDF函数来实现代码:object Test02 { def main(args: Array[String]): Unit = { // spark配置文件 val sparkConf: SparkConf = new SparkConf().setMaster("local[*]")

2022-04-10 21:25:05 258

原创 报错:Since Spark 2.3,the queries from raw JSON/CSV files are disallowed when thereferenced columns

错误:Exception in thread "main" org.apache.spark.sql.AnalysisException: Since Spark 2.3, the queries from raw JSON/CSV files are disallowed when the referenced columns only include the internal corrupt record column (named _corrupt_record by default). For ex

2022-04-10 14:42:59 2218

原创 解决idea运行时控制台打印日志问题(spark运行时)

今天创建一个sparkSQL工程,运行第一个sparkSQL程序控制台打印了许多冗余的info级别的日志信息解决方案:在工程项目的资源resources目录下配置一下log4j日志配置文件log4j.rootCategory=ERROR, consolelog4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.errlog4j.appender.console.

2022-04-10 11:28:37 2320

原创 spark学习笔记2

RDD的持久化其实就是对RDD的数据进行缓存处理,为什么用到缓存?在RDD得到执行过程中不会保存数据,只会保存血缘关系(依赖关系),那么如果一个RDD被多个RDD依赖就会出现,一个依赖之后数据就没了,另一个还需根据血缘关系去找到最初数据重新走一遍这是非常效率低下的。所以引出了缓存来解决。1)RDD cache缓存RDD通过Cache 或者 Persist 方法将前面的计算结果缓存,默认情况下会把数据以缓存在 JVM的堆内存中。但是并不是这两个方法被调用时立即缓存,而是触发后面...

2022-04-09 21:48:15 362

原创 spark实现对相同字母组成的单词汇总

前篇使用过spark实现MapReduce实现对相同字母组成的单词汇总但是涉及到了groupByKey算子,存在shuffle过程,效率有提高空间,就考虑使用累加器这个分布式共享只写变量数据结构来避免shuffle进而提高效率代码如下object WordCollect1 { def main(args: Array[String]): Unit = { val sc = new SparkContext(new SparkConf().setMaster("loc.

2022-04-09 21:36:43 378

原创 spark案例:Top10 热门品类中每个品类的 Top10 活跃 Session 统计

接上一篇spark案例:Top10 热门品类分析:top10热门已获取,就可以通过品类ID和sessionID来汇总一种品类商品同一session的操作次数,再对品类分区排序思路想好直接上代码:// 获取到top10的品类ID val cid: List[String] = values.map(_.cid) // 过滤数据(只留下top10) val filterRDD: RDD[String] = rdd.filter(

2022-04-09 21:02:21 1449

原创 spark案例:Top10 热门品类

数据格式:数据文件中每行数据采用下划线分隔数据每一行数据表示用户的一次行为,这个行为只能是 4 种行为的一种如果搜索关键字为 null,表示数据不是搜索数据如果点击的品类 ID 和产品 ID 为-1,表示数据不是点击数据针对于下单行为,一次可以下单多个商品,所以品类 ID 和产品 ID 可以是多个,id 之 间采用逗号分隔,如果本次不是下单行为,则数据采用 null 表示支付行为和下单行为类似需求:按照每个品类的点击、下单、支付的量来统计热门品类(先按照点击数排名,靠前的就.

2022-04-09 20:31:37 2589 1

原创 MapReduce实现对相同字母组成的单词汇总

首先数据格式为:相同字母组成的单词汇总,根据MapReduce的特点,map端的输出会在shuffle阶段进行按key分区输出到reduce端,利用这个特性,我们可以分析试图使相同字母组成的单词拥有同一个key值,正好相同字母就是可以作为相同值、只需要我们进行字母排序,因为存在大小写字母我们可以统一大小写再对字母排序来实现相同key。map端输出数据格式:[ act , act ] [ act , cat ] [ act , CAT ]reduce端收到数据格式:[ act , (act,c

2022-04-09 12:25:13 995

原创 spark学习笔记

从内存中创建RDD 分区:指定分区;默认分区:默认第一会去看你的sparkcontext上下文环境是否配置,没有就默认 分区数据分配:分区数转换为列表【0,1...】,数据分区核心源码:start = (i * length) / num;end = ((i + 1) * length) / num;数据分区范围为【start,end】length为数据(数组)长度,num为分区数 例:数据:【1,2,3,4】 ; 3分区【0,1,2】 0 = > start..

2022-04-08 11:38:08 242

原创 spark实现wordcount

创建spark上下文环境def main(args: Array[String]): Unit = { val sc = new SparkContext(new SparkConf().setMaster("local[*]").setAppName("wc")) val rdd: RDD[String] = sc.makeRDD(List( "spark hello", "hive", "hadoop hbase", "spark ha

2022-04-08 11:18:27 3944

原创 启动yarn调度执行MapReduce任务报错

Exception in thread "main" java.lang.IllegalAccessError: class org.apache.hadoop.hdfs.web.HftpFileSystem cannot access its superinterface org.apache.hadoop.hdfs.web.TokenAspect$TokenManagementDelegator网上查阅得知删除hadoop-hdfs-*.jar的jar包即可(是你需要执行的jar包内)...

2022-04-06 20:53:15 898

原创 mysql实现批量修改一个字段数据

如果需要批量修改某一字段的一个值可以使用(1)update 表名 set 字段名=replace(字段名,原值,新值);(2)update 表名 set 字段名=新值 where 条件(字段名=原值);(3)update 表名 set 字段名=新值 where 条件(字段名 is not null);...

2022-04-06 20:49:24 10907

原创 mysql报错:check the manual that corresponds to your MySQL server version for the right syntax to use

一,检查你的SQL语句是否有问题二,检查你的表名、表字段是否有问题:表名、表字段是否和SQL关键字冲突,是否和同库下其他表冲突解决方案:如在SQL语句方面确认无问题,那就修改你的表字段名吧,一般问题会出现在这...

2022-04-06 11:04:03 19531

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除