<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[bigdataprimary的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/bigdataprimary</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; bigdataprimary]]></copyright><item><title><![CDATA[python生成公历日期对应的农历描述]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/154991730</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/154991730</guid><author>bigdataprimary</author><pubDate>Tue, 18 Nov 2025 15:39:01 +0800</pubDate><description><![CDATA[数据-公历日期对应农历描述]]></description><category></category></item><item><title><![CDATA[hvie日期维度表建设]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/144187631</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/144187631</guid><author>bigdataprimary</author><pubDate>Mon, 02 Dec 2024 14:29:10 +0800</pubDate><description><![CDATA[last_day(date_sub(datestr,dayofmonth(datestr)-1)) month_end_date --当月最后一天。,concat(yearid,'年',monthid,'月',substr(datestr,9,2),'日') as date_name。,concat(yearid,'年第',quarterid,'季度') as quarter_cn_name。,concat(yearid,'年',monthid,'月') as monthstr。]]></description><category></category></item><item><title><![CDATA[字节电商-数仓面试]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/120744941</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/120744941</guid><author>bigdataprimary</author><pubDate>Wed, 13 Oct 2021 15:32:21 +0800</pubDate><description><![CDATA[1.二叉树的广度优先，深度优先实现
2.如何评价数仓的好坏
3.通过上一问的几个方面如何给多个数仓打分-落地，量化
4.a,b,c三张表a join b on a.id=b.id join c on b.id=c.id有几个map-reduce


笔试：
1.连续登录问题：求连续登录5天以上的人
2.用户登录表，每次登录记录一条数据，登录时间精确到秒，求用户的登录总时长，如果两次登录时间超过三十分钟不作为连续登录，单条登录信息时间算0
3.微信红包
 入参：红包个数，总金额
 出参：数组，数组...]]></description><category></category></item><item><title><![CDATA[面试记录-数仓]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/118914957</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/118914957</guid><author>bigdataprimary</author><pubDate>Mon, 19 Jul 2021 21:38:37 +0800</pubDate><description><![CDATA[MT-买菜


1.简介
2.项目介绍
3.数据迁移中的校验，如何进行，数据量大不能全量比对如何优化
4.0到1的数仓具体建设内容，ods/dwd/dws分别做了啥，维度退化从哪一步开始
5.数据治理可以做的点
6.sql+python题


...]]></description><category></category></item><item><title><![CDATA[DataX-数据转换自定义函数]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/111691272</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/111691272</guid><author>bigdataprimary</author><pubDate>Fri, 25 Dec 2020 16:57:58 +0800</pubDate><description><![CDATA[使用DataX将mysql数据倒入Hive由于字段包含【\n】导致Hive数据串行，在DataX配置文件中加入Transformer解决。


参考-DataX-github

问题：

DataX本身自带的函数没有类似replace的替换函数所以需要自定义groovy函数来实现。
	字段本身会有空值导致数据被过滤，需要做容错。
话不多说上代码


                "transformer":[
                    {
                        ".]]></description><category></category></item><item><title><![CDATA[数仓-订单状态变化]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/110563948</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/110563948</guid><author>bigdataprimary</author><pubDate>Thu, 03 Dec 2020 21:05:19 +0800</pubDate><description><![CDATA[引言：在数据仓库建设中，存在需要保存历史状态的情况，比如核心实体的历史状态/订单状态等。技术解决方案通常采用历史拉链表，但是拉链表计算逻辑复杂/成本高/使用困难，下面讨论其他的解决方案。


累计快照事实表

以订单模型为例：订单编号/状态/时间

拉链表方案

订单编号
			状态
			时间
			开始时间
			结束时间
		001
			下单
			2020-12-03
			2020-12-03
			2020-12-04
		001
			付款
			2020-12-04
			2020-12.]]></description><category></category></item><item><title><![CDATA[hive分区表修改增加列遇到的两个问题]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/110186633</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/110186633</guid><author>bigdataprimary</author><pubDate>Thu, 26 Nov 2020 14:31:37 +0800</pubDate><description><![CDATA[由于需求改变，需要在原有的hive分区表中添加列，并每次充写最近30天的分区数据。


问题：

1.执行alter语句增加列后修改列的位置，导致数据串列。
	2.重写分区后只有最新分区的新增列有数据，其他原有分区的该列为null。
问题原因：

1.hive增加列只是修改了hive的元数据，并没有改变hdfs的数据文件，其查询结果按照列的顺序和hdfs按分隔符分割后的数据对应，导致错列。

2.原因与上面的相同，解决方法为删除旧分区后再重新写入，


alter table db.table drop .]]></description><category></category></item><item><title><![CDATA[Python邮件与CentOS邮件]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/106094943</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/106094943</guid><author>bigdataprimary</author><pubDate>Thu, 14 May 2020 15:32:27 +0800</pubDate><description><![CDATA[背景：由于项目需要对每日数据进行比对监控，所以需要把比对结果发送给各负责人，本文记录下Python发送邮件的几个步骤。


需要模块：smtplib


pip install smtplib

闲言少叙上代码


# -*- coding: UTF-8 -*-
from  email.header import Header
from email.mime.text import MIMEText
import smtplib
#发送邮箱
sender='xxxxx@qq.com'
password='.]]></description><category></category></item><item><title><![CDATA[Python调用MySQL存储过程]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/105534187</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/105534187</guid><author>bigdataprimary</author><pubDate>Wed, 15 Apr 2020 14:29:44 +0800</pubDate><description><![CDATA[使用Python处理MySQL逻辑时如果把SQL语句直接写在字符串中调用多次运行需要多次编译而且代码维护难度增加，MySQL存储过程将SQL逻辑封装解决这个问题，下面记录一下测试效果。


创建测试存储过程


delimiter $$
DROP PROCEDURE IF EXISTS `add_person`$$
CREATE PROCEDURE `add_person`(IN p_id in...]]></description><category></category></item><item><title><![CDATA[数据仓库之拉链表]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/104800061</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/104800061</guid><author>bigdataprimary</author><pubDate>Wed, 11 Mar 2020 17:36:19 +0800</pubDate><description><![CDATA[背景：在业务数据中存在会改变状态的数据，需要做历史分析，比如订单状态、登录位置等。

问题：如何找到历史某一天的所有主体的状态。


针对上述问题有三种解决方案：

每天保存全量数据快照：每天都做数据全量备份，可直接查询历史某个节点的全量数据。
	每天只做增量数据抽取：查询的时候需要按用户分组并过滤更新时间最近的数据。
	每天做增量数据且完成拉链：查询指定开始和结束时间即可。
上述三种方案的利弊...]]></description><category></category></item><item><title><![CDATA[计算连续登陆最大天数]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/102853503</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/102853503</guid><author>bigdataprimary</author><pubDate>Fri, 01 Nov 2019 11:21:57 +0800</pubDate><description><![CDATA[背景：在网站平台类业务需求中用户的「最大登陆天数」，需求比较普遍。


原始数据：


u0001 2019-10-10
u0001 2019-10-11
u0001 2019-10-12
u0001 2019-10-14
u0001 2019-10-15
u0001 2019-10-17
u0001 2019-10-18
u0001 2019-10-19
u0001 2019-10-20

u...]]></description><category></category></item><item><title><![CDATA[python 操作 hive]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/94380592</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/94380592</guid><author>bigdataprimary</author><pubDate>Mon, 01 Jul 2019 10:09:27 +0800</pubDate><description><![CDATA[在使用Hadoop生态的时候需要使用脚本动态拼接hiveSQL来实现对数据的适应性操作。

在业务中使用了两种方式，下面做下记录：

1.使用hive -e 'sql '

2.JDBC方式



-- 第一种方式 使用 hive -e 来执行命令
-- 这种方式的有点是操作简单，无需其他关联操作，使用的模块时os
os.system('hive -e "select * from ..."')...]]></description><category></category></item><item><title><![CDATA[hive几种join方式]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/93973431</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/93973431</guid><author>bigdataprimary</author><pubDate>Fri, 28 Jun 2019 10:41:13 +0800</pubDate><description><![CDATA[hive处理表关联时由于数据量以及数据倾斜等问题会导致计算性能差甚至任务失败，下面记录一下hive的几种关联方式。


1.common join

普通连接，在SQL中不特殊指定连接方式使用的都是这种普通连接。

缺点：性能较差

优点：操作简单，普适性强

2.map join

map端连接，与普通连接的区别是这个连接中不会有reduce阶段存在，连接在map端完成

适用场景：大表与小表...]]></description><category></category></item><item><title><![CDATA[hive 提交任务时Job init failed]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/93724116</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/93724116</guid><author>bigdataprimary</author><pubDate>Wed, 26 Jun 2019 11:37:44 +0800</pubDate><description><![CDATA[背景：oozie+hive+python.

执行操作：在oozie中配置python脚本动态拼接SQL使用hive执行

关键操作：hiveSQL中有动态分区



报错信息：


2019-03-26 13:53:51,437 WARN [main] org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl: Job init failed
or...]]></description><category></category></item><item><title><![CDATA[Hive order by ,sort by ,distribute by, cluster by]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/92593551</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/92593551</guid><author>bigdataprimary</author><pubDate>Mon, 17 Jun 2019 14:27:51 +0800</pubDate><description><![CDATA[Hive中对于排序给出了通用的「order by」与 非全局排序「sort by」至于其他两个函数是配合使用的。


order by与sort by的区别：

order by的使用与标准SQL相同，实现全局排序，但是缺点是由于要进行全局有序所以在reduce阶段只有一个reducer，也就意味着失去了发挥多节点并发的优势，性能较差。

sort by是在分区内排序，在reduce阶段不会只剩...]]></description><category></category></item><item><title><![CDATA[Windows 可以使用 gitbash 但是cmd不能识别git命令]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/90260725</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/90260725</guid><author>bigdataprimary</author><pubDate>Thu, 16 May 2019 11:54:47 +0800</pubDate><description><![CDATA[Windows下安装了git 鼠标右键可以看到 gitbash和GitUI 但是cmd命令行不能执行git命令


原因：没有配置git.exe的路径到PATH环境变量中

解决：在gitbash命令行中执行


where git

找到git.exe的路径，然后配置到环境变量PATH中

重新启动CMD即可，注意配置环境变量的时候添加 git.exe所在文件夹即可
...]]></description><category></category></item><item><title><![CDATA[python 数据库 % 冲突问题解决]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/90237756</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/90237756</guid><author>bigdataprimary</author><pubDate>Wed, 15 May 2019 15:36:34 +0800</pubDate><description><![CDATA[在使用python后台调用 MySQL数据库的时候会有 「%」的关键字冲突问题，比如 用Python后端读取 MySQL 中记录的逻辑，在 impala端执行，其中涉及到模糊匹配的 「%」会报错


解决：SQL逻辑中的单个「%」换为「%%」即可，不错的 trip。
...]]></description><category></category></item><item><title><![CDATA[pycharm urls 文件没有高亮显示]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/90209369</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/90209369</guid><author>bigdataprimary</author><pubDate>Tue, 14 May 2019 16:28:49 +0800</pubDate><description><![CDATA[使用 pycharm 开发 django 项目发现配置urls文件时没有高亮语法显示，看起来相当难受，做下记录


原因：pycharm将urls文件当做普通的文本文件处理了，效果如下





解决：File---&gt;settings----&gt;editor---&gt;File Types



将urls.py移除即可
...]]></description><category></category></item><item><title><![CDATA[Python学习日志--文件读写]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/89387401</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/89387401</guid><author>bigdataprimary</author><pubDate>Thu, 18 Apr 2019 20:54:35 +0800</pubDate><description><![CDATA[在编程过程中经常需要文件读写，Python的文件读写要比Java简单的多。


打开文件的集中方式：


# 1.只读
open("path/filename","r")

# 2.只写
open("path/filename","w")

# 3.追加
open("path/filename","a")

# 读取整个文件
file = open("path/filename","r")
fi...]]></description><category></category></item><item><title><![CDATA[Python学习日志--面向对象]]></title><link>https://blog.youkuaiyun.com/bigdataprimary/article/details/89386786</link><guid>https://blog.youkuaiyun.com/bigdataprimary/article/details/89386786</guid><author>bigdataprimary</author><pubDate>Thu, 18 Apr 2019 20:29:05 +0800</pubDate><description><![CDATA[面向对象的思想是高级语言中最好的特性，使程序的开发更加优美，维护起来更加简洁。

Python中面向对象与Java中的面向对象在特性和功能方面几乎没有区别。


面向对象的特征：

封装性：可以将多个属性和方法(功能)封装，有利于统一维护
	继承性：在继承父类之后将拥有父类的属性和方法，简化程序的开发，维护
	多态性：相同函数由于执行的对象的不同产生的效果也就是执行的代码段不同
示例1：封装

...]]></description><category></category></item></channel></rss>