<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[February13的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/February13</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; February13]]></copyright><item><title><![CDATA[python实现for循环多线程执行]]></title><link>https://blog.youkuaiyun.com/February13/article/details/135550448</link><guid>https://blog.youkuaiyun.com/February13/article/details/135550448</guid><author>February13</author><pubDate>Fri, 12 Jan 2024 13:30:53 +0800</pubDate><description><![CDATA[【代码】python实现for循环多线程执行。]]></description><category></category></item><item><title><![CDATA[sparksql broadcast join opt]]></title><link>https://blog.youkuaiyun.com/February13/article/details/133752369</link><guid>https://blog.youkuaiyun.com/February13/article/details/133752369</guid><author>February13</author><pubDate>Tue, 10 Oct 2023 17:24:13 +0800</pubDate><description><![CDATA[to_utc_timestamp(current_timestamp,‘GMT-8’)                                                                      as etl_load_time                             --数据入湖时间。from dm_secure.dm_fin_pnl_sams_item_pnl_di                         – sams商品日销售损益宽表。]]></description><category></category></item><item><title><![CDATA[订单正逆向流程]]></title><link>https://blog.youkuaiyun.com/February13/article/details/132756661</link><guid>https://blog.youkuaiyun.com/February13/article/details/132756661</guid><author>February13</author><pubDate>Sat, 23 Sep 2023 11:26:17 +0800</pubDate><description><![CDATA[提示：以下是本篇文章正文内容，下面案例可供参考订单业务线性流程。]]></description><category></category></item><item><title><![CDATA[大数据杂谈]]></title><link>https://blog.youkuaiyun.com/February13/article/details/133200314</link><guid>https://blog.youkuaiyun.com/February13/article/details/133200314</guid><author>February13</author><pubDate>Sat, 23 Sep 2023 11:18:03 +0800</pubDate><description><![CDATA[大数据开发方向

偏业务侧方向-项目经理


如何在面试中说服面试官

根据课程项目做一些改动（变成自己熟悉的东西），形成一个新的项目，去增强面试的能力


数据湖是数仓的增强版本

格式管理
数据管理

时间旅行
manifests
schema演变
分区演变






]]></description><category></category></item><item><title><![CDATA[排序算法简述]]></title><link>https://blog.youkuaiyun.com/February13/article/details/132327988</link><guid>https://blog.youkuaiyun.com/February13/article/details/132327988</guid><author>February13</author><pubDate>Sat, 19 Aug 2023 22:29:47 +0800</pubDate><description><![CDATA[mapreduce中的排序算法即作用归并排序（Merge sort）是建立在归并操作上的一种有效、稳定的排序算法，该算法是采用分治法(Divide and Conquer）的一个非常典型的应用。将已有序的子序列合并，得到完全有序的序列；即先使每个子序列有序，再使子序列段间有序。若将两个有序表合并成一个有序表，称为二路归并总结：归并是将子序列合并的意思，合并的方法是用辅助列实现。快速排序：使用递归的思想，设定分界值，其左侧和右侧，将小于分界值的数据放在左侧，大于分界值的数据放在右侧；]]></description><category></category></item><item><title><![CDATA[semi、anti join]]></title><link>https://blog.youkuaiyun.com/February13/article/details/132135744</link><guid>https://blog.youkuaiyun.com/February13/article/details/132135744</guid><author>February13</author><pubDate>Sun, 06 Aug 2023 21:20:11 +0800</pubDate><description><![CDATA[这就导致右表有重复值得情况下 left semi join 只产生一条，join 会产生多条，也会导致 left semi join 的性能更高。left anti join与left semi join相反，是以左表为准，在右表中查找匹配的记录，如果查找成功，则返回null，否则仅返回左边的记录。给 map 阶段，因此left semi join 中最后 select 的结果只许出现左表。1、left semi join 的限制是， JOIN 子句中右边的表只能在。2、left semi join 是。]]></description><category></category></item><item><title><![CDATA[hive谓词下推]]></title><link>https://blog.youkuaiyun.com/February13/article/details/132051427</link><guid>https://blog.youkuaiyun.com/February13/article/details/132051427</guid><author>February13</author><pubDate>Tue, 01 Aug 2023 23:29:35 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[海量数据存储组件Hbase]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131949512</link><guid>https://blog.youkuaiyun.com/February13/article/details/131949512</guid><author>February13</author><pubDate>Sun, 30 Jul 2023 19:01:39 +0800</pubDate><description><![CDATA[hdfshbaseNoSQL数据库 支持海量数据的增删改查 基于Rowkey查询效率特别高kudu介于hdfs和hbase之间hbase依赖hadoop+zookeeper，同时整合框架phoenix(擅长读写),hive（分析数据）k，v 储存结构稀疏的（为空的不存储）、分布式的、持久地、多维排序map-》映射：行键、列键、时间戳，未解释的（序列化的，存储效率高）]]></description><category></category></item><item><title><![CDATA[f2主键增量算法修历史]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131970809</link><guid>https://blog.youkuaiyun.com/February13/article/details/131970809</guid><author>February13</author><pubDate>Thu, 27 Jul 2023 23:57:58 +0800</pubDate><description><![CDATA[3.需要修数据的arcdt分区中分为要修的t1和不修的数据t3，要修数据即为t1，不修的数据为拉链表中要修数据的分区中所有数据减去t1（这个地方需要主键加开始日期做筛选）4.t1、t2、t3三部分整合到一张表即可，注意t1和t3是同分区，需要先insertoverwrite再insertinto。1.先使用sa0615数据筛选出拉链表中所有相关主键数据，从中按主键分组，arcdt取最小一条，放临时表t1中。2.通过临时表t1筛选与修数据无关的arc_dt分区字段值，这些部分为t2全部直接回插。]]></description><category></category></item><item><title><![CDATA[Spark3新特性]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131748386</link><guid>https://blog.youkuaiyun.com/February13/article/details/131748386</guid><author>February13</author><pubDate>Sun, 16 Jul 2023 12:41:07 +0800</pubDate><description><![CDATA[spark3.0动态分区裁剪：与逻辑计划的谓词下推静态优化不同，这个是运行时的动态优化特性，如案列中小表的过滤，其实是基于维度表的裁剪的基础上，在join关联之前提前检测另一张事实表中对应条件的数据进行提前过滤。动态调整JOIN策略：类似于mapjoin优化，将sortMergejoin转换成broadcasthashjoin，也就是将小表当作广播变量分发到另一个表的所有节点上，如此可以减少大量的网络IO。实现运行时优化，纠正因统计信息不准确导致生成的逻辑计划不完善或有误的问题。]]></description><category></category></item><item><title><![CDATA[Spark高级特性]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131745237</link><guid>https://blog.youkuaiyun.com/February13/article/details/131745237</guid><author>February13</author><pubDate>Sat, 15 Jul 2023 23:10:56 +0800</pubDate><description><![CDATA[sortShuffle比hashShuffle好的地方在于，sortShuffle是每个task（并行度）产生一个文件，而hashShffle是按hash分区来的，一个task会产生多个文件，增加了网络IO。spark shuffle 中 map 和 reduce 是一个相对的概念，map是产生一批数据，reduce是接收一批数据，前一个任务是map，后一个任务是reduce。hashShuffle：hash分组，一个task里面按hash值的不同，分到不同的组里，在内存中也是独立的。]]></description><category></category></item><item><title><![CDATA[sparkSQL UDF]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131732473</link><guid>https://blog.youkuaiyun.com/February13/article/details/131732473</guid><author>February13</author><pubDate>Sat, 15 Jul 2023 18:24:45 +0800</pubDate><description><![CDATA[sparksql只能创建UDF，使用 SparkSession.udf.register()指定一个schema，df说白了是一个二维数组。]]></description><category></category></item><item><title><![CDATA[SparkSQL]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131670613</link><guid>https://blog.youkuaiyun.com/February13/article/details/131670613</guid><author>February13</author><pubDate>Tue, 11 Jul 2023 22:58:29 +0800</pubDate><description><![CDATA[工具连接spark使用sparkSql访问Hive表，就要用到一个东西SparkThirdService；这东西就类似java jdbc连接，连接。的hiveService2这种东西；#进入Spark安装目录。]]></description><category></category></item><item><title><![CDATA[SparkCoreDAG]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131668230</link><guid>https://blog.youkuaiyun.com/February13/article/details/131668230</guid><author>February13</author><pubDate>Tue, 11 Jul 2023 22:22:40 +0800</pubDate><description><![CDATA[窄依赖：规整的内存迭代计算管道（pip line）执行（就是一个个具体的task），一个线程对应一个窄依赖，线程间互不影响。一个action会产生一个JOB（DAG）（即一个应用程序内的子任务） 一个action=一个Job=一个DAG。带有分区的DAG只有在运行的时候才会生成，因为像指定并行度的逻辑，只有运行的时候才知道你传入的参数是多少。rDD在横向上一个task可以处理多个RDD一个分区，竖向上每个分区都需要有一个task去处理。dag的作用是使用内存计算，stage的作用是构建内存计算。]]></description><category></category></item><item><title><![CDATA[PySpark的RDD持久化]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131623789</link><guid>https://blog.youkuaiyun.com/February13/article/details/131623789</guid><author>February13</author><pubDate>Sun, 09 Jul 2023 17:06:14 +0800</pubDate><description><![CDATA[>1. RDD缓存 ,把某个RDD保留，rdd.cache() 缓存到内存，rdd.persist(StorageLevel.DISK_ONLY_2) 缓存到本地硬盘上,2个副本，不支持存HDFS，保留血缘关系。-> 2.RDD Checkpoint 仅支持存硬盘，设计上安全，不保留血缘关系（后台执行计划可体现）RDD迭代链条中只有最新的RDD，旧RDD会销毁，节省内存空间。缓存的原理是写到对应节点的服务器上的本地内存或磁盘上。追溯旧RDD是依照血缘关系，使用持久化技术。]]></description><category></category></item><item><title><![CDATA[pyspark]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131524221</link><guid>https://blog.youkuaiyun.com/February13/article/details/131524221</guid><author>February13</author><pubDate>Sun, 09 Jul 2023 15:54:59 +0800</pubDate><description><![CDATA[连接命令：一个application 大任务可以分解成 多个小任务 jobs， 一个job又可以分解成多个 stages 阶段，一个stage又可以分解成 多个tasks（可以认为是两个线程）standalone Zookeeper 高可用HA，集群中存在多个master，但最先注册的成为active，其它是standby，集群包含Worker、Driver、Applicationmaster由resource manager 担任work由node manager担任。]]></description><category></category></item><item><title><![CDATA[MySQL语法底层]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131622900</link><guid>https://blog.youkuaiyun.com/February13/article/details/131622900</guid><author>February13</author><pubDate>Sun, 09 Jul 2023 15:20:49 +0800</pubDate><description><![CDATA[查询的过程大致如下：1、选取一张表，我们称之为【驱动表】，从驱动表中开始查询，找到满足条件的数据（如果没有条件就依次全部取出）。2、根据从驱动表查询的这条数据，以及其他条件，去第二张【被驱动表】中查询，并将结果进行拼接。3、依次类推，从驱动表获取第二条数据，使用该数据和条件，再次查询【被驱动表】进行查询。4、整个过程，会查询【驱动表】一次，查询【被驱动表】多次。]]></description><category></category></item><item><title><![CDATA[用户留存率]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131524383</link><guid>https://blog.youkuaiyun.com/February13/article/details/131524383</guid><author>February13</author><pubDate>Mon, 03 Jul 2023 21:50:05 +0800</pubDate><description><![CDATA[留存用户率 =  留存用户 / 第n天新增用户 *100%留存用户是  前第n天新增用户数 join 今日活跃。首先确定 计算前几天的留存？]]></description><category></category></item><item><title><![CDATA[JavaSE ==和equals（）]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131506752</link><guid>https://blog.youkuaiyun.com/February13/article/details/131506752</guid><author>February13</author><pubDate>Sun, 02 Jul 2023 23:10:51 +0800</pubDate><description><![CDATA[equals（） 默认是object类下的方法， 用==实现，比较的是地址。== 如果是基本数据类型，比较的是变量值。重写一般改成比较他们的值属性的内容。如果是引用数据类型，比较的是地址。]]></description><category></category></item><item><title><![CDATA[Java final、finally、finalize]]></title><link>https://blog.youkuaiyun.com/February13/article/details/131506711</link><guid>https://blog.youkuaiyun.com/February13/article/details/131506711</guid><author>February13</author><pubDate>Sun, 02 Jul 2023 23:03:22 +0800</pubDate><description><![CDATA[Final 修饰 类， 不可被继承；修饰变量，变量不可改变；修饰方法，方法不能被重写；Finalize是 垃圾回收之前用于整理资源的方法，可以在这个方法里面些整理的逻辑。Finally 是 try-catch之后的一个代码块，只要JVM还在，就会执行；]]></description><category></category></item></channel></rss>