- 博客(58)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 【leetcode】第五章 栈与队列part03
当滑动窗口向右移动时,我们需要把一个新的元素放入队列中。为了保持队列的性质,我们会不断地将新的元素与队尾的元素相比较,如果前者大于等于后者,那么队尾的元素就可以被永久地移除,我们将其弹出队列。我们需要不断地进行此项操作,直到队列为空或者新的元素小于队尾的元素。就是滑动窗口中的最大值。但与方法一中相同的是,此时的最大值可能在滑动窗口左边界的左侧,并且随着窗口向右移动,它永远不可能出现在滑动窗口中了。为了可以同时弹出队首和队尾的元素,我们需要使用双端队列。由于队列中下标对应的元素是严格单调递减的,因此此时。
2023-08-23 13:14:10 426
原创 浅谈Spark的RDD、部署模式
通过源码可以看出cache()是persist()的简化方式,调用persist的无参版本,也就是调用persist(StorageLevel.MEMORY_ONLY),cache只有一个默认的缓存级别MEMORY_ONLY,即将数据持久化到内存中,而persist可以通过传递一个 StorageLevel 对象来设置缓存的存储级别。Spark 的缓存具有容错机制,如果一个缓存的 RDD 的某个分区丢失了,Spark 将按照原来的计算过程,自动重新计算并进行缓存。YARN是Hadoop中的资源管理器。
2023-08-21 22:08:24 734
原创 【SQL】窗口函数及行转列等操作总结
行转列用groupby+sumif,列转行用union allUNION和UNION ALL效率:UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回。从效率上说UNION ALL要比UNION快很多,所以,如果可以确认合并的两个结果集中。
2023-05-02 22:50:17 2268
原创 【SQL篇】窗口函数和公共表达式
这里有个坑,count并不会根据partition来分组,所以必须根据group by 来分组计算出count的数量;其次group by在窗口函数之前执行。注意lead(x,y,z) over()的参数,x代表要寻找的列,y代表往后走几个位置,z代表当x+y找不到记录时的默认值。
2023-05-02 11:33:34 552
原创 【大数据】Hadoop总结
一、概述1. Hadoop特性2. HDFS结构HDFS 架构二、HDFS分布式文件系统1 概述2. HDFS存储数据架构图NameNodeDataNode3 HDFS优点4 HDFS缺点(不适用HDFS的场景)5 HDFS技术细节BlockNameNodeDataNode6 HDFS 副本放置策略7 何为机架感知8 namenode 被格式化之后产生了哪些文件(edits,fsimage,seen_txid,VERSION)?各自的功能是什么?9 Secondary NameNode的功能。
2023-05-01 20:41:13 2287 1
原创 【SQL篇】面试篇之子查询
考察子查询学会使用窗口函数的区别rank()排序相同时会重复,总数不变,即会出现1、1、3这样的排序结果;排序相同时会重复,总数会减少,即会出现1、1、2这样的排序结果;排序相同时不会重复,会根据顺序排序。注意点row_number函数得到的列别名可用于order by 排序,因为order by执行在select之后。where, group by, having都不可引用该列,因为这些语句执行在select之前,此时函数尚未计算出值。
2023-04-30 16:10:55 925
原创 【SQL篇】面试之高级查询和连接
思路:为什么我们这里需要abs和distinct,如果是如下代码,为什么不可以?上面代码的结果忽略了最后一个满足条件的记录,因此我们需要使用abs,使得我们可以获得所有满足条件的记录,但这样存在重复的记录,因此需要使用distinct 去重重复元素。行转列用groupby+sumif,列转行用union allUNION和UNION ALL效率:UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。
2023-04-30 10:45:24 860
原创 【SQL】面试篇之排序和分组练习
这里看到有说可以直接使用having的,但该方法在mysql的更高版本是会出现错误的。# having写法 select name , sum(amount) as balance from Users u left join Transactions t on u . account = t . account group by u . account having balance > 10000。
2023-04-29 14:58:41 844
原创 【Spark练习】List和Set练习
对于不可变List,可以模拟添加、移除、更新操作,但这些操作都会返回一个新的集合,原来的集合不会发生改变;可使用:: 、 :::、concat、filter、map方法,不能使用append方法。对可变List 可进行修改、添加、移除一个元素,不会返回新的集合。无:: 、 :::、concat 方法,可使用append、map 、filter 方法。
2023-04-28 16:09:26 291
原创 【问题】Could not calculate build plan: Plugin org.apache.maven.plugins
发现pom文件报错,问题可能都是网络下载问题,导致jar包下载有问题若发现有lastupdated文件,则删除repository文件夹,重新下载maven->update project ,注意勾选 force选项!即使使用阿里云仍然显示lastupdated,则开cmd,到达project 路径,通过mvn install即可解决(最终解决)cd 项目存放路径。
2023-04-28 16:06:41 2025
原创 【SQL篇】面试之聚合函数
注意where和group by的执行次序。where要在group by之前。写法1思路先寻找各个顾客的订单数量找到订单数量最大的记录找到与该订单数量相同的顾客去掉count(*)字段即可写法2思路:先根据group by 分组,接着根据每个分组的记录数量排序,然后取第一个。思路详解。在该写法中主要用到了count的思想。case when方法和sum方法思想大致相同。我们可以直接使用sum,当为真时,sum 值加 1。
2023-04-28 15:22:33 110
原创 【SQL篇】面试篇之连接
主要考察left join后on、and和where的区别。left join后,on是筛选右边表的记录,不影响左表。where是对求积之后的表进行筛选。ifNull;如果expression_1不是null,返回expression_1,如果为null,返回expression_2。当使用join时,我们可能经常使用left join,但就效率而言left join和inner join的效率需要视情况而定。case when的用法,详细见case when用法。
2023-04-27 22:00:40 106
原创 【SQL练习】面试之查询篇
left的使用,表示从str最左边一个字符开始返回指定数目(len)的字符。若len的值大于str的长度,则返回字符表达式的全部字符str。如果len为负值或 0,则返回空字符串。该题我总容易写出,但这无法做到三个条件查询,我们应该考虑先分组;然后根据分组后的的数量来过滤不符合条件的用户。一个用户可以重复买多个同类产品,因此A,B产品数量应大于0,而不应该存在C,因此C产品的数量为0。该题目中用到sum函数里的按条件查询,如下。sum(if(条件,列值,0))
2023-04-26 23:14:47 76
原创 【3. 无重复字符的最长子串】
中,如果不包含,将该字符添加到map(字符,字符在数组下标);,如:abca,当我们遍历到第二个a,当前有效最长子段是 abc,我们又遍历到a;,如:abba,我们先添加a,b进map,此时left=0,我们再添加b,发现map中包含b,而且b包含在最长有效子段中,就是1)的情况,我们更新。更新left后,不管原来的 s.charAt(i) 是否在最长子段中,我们都要将s.charAt(i) 的位置更新为当前的i,因此此时新的。,实际上,left此时应该不变,left始终为2,子段变成 ba才对。
2023-04-17 14:43:58 71
为什么会输出受限,求解
2017-11-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人