Python
BabyFish13
不要急,慢慢来;控制好节奏,奋斗到底!
展开
-
配合任务迁移数仓ETL脚本按需替换方案
1、需求场景描述Etl任务迁移,需要对原etl脚本进行改造。将原实际的目标及源库名替换成参数样式。老的方式:ods.user_visit_new、dwt.dwt_user_visit要替换成的格式:源表 使用 c.from 前缀,如 ${c.from.ods}.user_visit_new目标表 使用 c.to 前缀,如: ${c.to.dwt}.dwt_user_visit2、具...原创 2019-12-12 20:33:32 · 418 阅读 · 0 评论 -
Python命名及编码规范
1 命名规范1.1、模块名 尽量使用小写,尽量使用下换线import myclass1.2、类名 使用骆驼写法,单词首字母大写,私有类可以下划线开头class MyClass(): passclass YouClass(): pass1.3、函数名一律小写,若有多个单词用下划线隔开;私有函数下划线开头def my_func(var1, var2): pa...原创 2019-12-10 10:39:44 · 412 阅读 · 0 评论 -
数仓中根据etl脚本查找表的上游依赖关系
1、具体脚本/Users/nisj/Documents/wptDataGit-nisj/wptData/pyScript/batchDataForWpt/getDependsFromSql.py# -*- coding=utf-8 -*-import osimport reimport datetimeimport warningsimport timeimport thread...原创 2019-11-09 13:51:12 · 979 阅读 · 0 评论 -
Python下的Mysql模块MySQLdb安装
在Python环境下,如果想操作MySQL数据库,需要调用相应的包,比如常用的:MySQLdb通过导入import MySQLdb后,可直接调用里面的方法。如果模块未提前安装,则会报相应的错误:ImportError: No module named MySQLdb;所以,Python下的Mysql模块MySQLdb需要提前安装。1、下载 MySQL for Python 地址:htt原创 2016-03-22 20:18:34 · 1102 阅读 · 0 评论 -
Python操作Oracle、Mysql及文本进行数据处理
1、脚本中中到的表结构信息CREATE TABLE `static_sdk_room_messge_send` ( `xappkey` varchar(100) DEFAULT NULL, `roomid` varchar(100) DEFAULT NULL, `messge_send_cnt` bigint(20) DEFAULT NULL, `pt` varch原创 2016-11-04 10:55:25 · 1992 阅读 · 1 评论 -
python cx_Oracle模块的安装
对于Oracle客户端,不只需要安装相应的python模块,还需要安装Oracle Client;还需要配置tnsnames.ora(当然也可以简单的通过host:port/instance访问)。1、下载安装cx_Oracle python模块[root@master pystudy]#wget https://pypi.python.org/packages/3b/67/d原创 2016-11-04 12:02:05 · 2177 阅读 · 0 评论 -
Mysql分表数据通过Python进行汇总统计
接上文:【Mysql分表数据通过Shell进行导出与统计】---> http://blog.csdn.net/babyfish13/article/details/527777801、每个分表数据量及总数据量统计mysql_much_tab_data_static1.py# -*- coding=utf-8 -*-import smtplibimport MySQLdb原创 2016-11-09 14:31:50 · 3217 阅读 · 0 评论 -
Python进行数据的Group by、取最大值、子查询及从分表取数据一例
1、从分表之一预计算select A.room_id,SUBSTRING(A.created_time,1,10) days,max(A.online_count)from room_online_stat_15 Awhere SUBSTRING(A.created_time,1,10) between '2016-11-15' and '2016-11-21' and category原创 2016-11-29 07:28:42 · 8149 阅读 · 0 评论 -
Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode问题解决
执行一段Python代码时报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)/Users/nisj/PycharmProjects/EsDataProc/excel_index_find.py# -*- coding=utf-8 -原创 2016-11-29 09:54:48 · 4338 阅读 · 0 评论 -
Python进行数据的Join关联操作及从分表取数据一例
这样的功能主要用在两表分别在不同的数据库上,在数据库层面不同步数据关联不了的情况。且目前,被关联的表公仅支持是key/value两列数据的情况。1、数据准备-- 主表select * from x_student_scoresinsert into x_student_scoresselect 1,'语文',1,98 union all select 2,'数学',1,99 uni原创 2016-11-30 18:41:56 · 4566 阅读 · 0 评论 -
使用Python实现Hive的UDF示例
主要分为两个部分,一个部分为Python脚本实现想要实现的功能,另外一个部分为HQL部分,调用Python脚本对数据进行处理。HQL调用Python实现的UDF其实有一个重定向的过程,把数据表中之列的列重定向Python的标准输入中,按行操作,首先将每行按照指定的分割符分开,一般为’\t’,然后剩下的就是对其进行操作,print需要的列,以’\t’分割。1、Python实现的UDF代码原创 2016-12-10 15:49:23 · 5391 阅读 · 0 评论 -
用Python和AWK结合处理Access log请求信息
本样例主要用于处理Tomcat及nginx的access访问日志请求信息,是一个初步的版本。在此基础之上,还可以进行多线程、在Hadoop上运行等优化处理,有待完善。1、示例原始access_log文件/Users/nisj/Desktop/new-demand/x-log.txt183.144.201.217 10.26.2.58|[06/Sep/2016:19:10:53 +08...原创 2016-12-02 17:35:22 · 5416 阅读 · 0 评论 -
用Python处理Access log请求信息
接上文,《用Python和AWK结合处理Access log请求信息》--->http://blog.csdn.net/babyfish13/article/details/53436844上文中,基本上相当于用Python处理access log列的展示问题,而用awk处理saccess log中条件过滤问题;本文作了一定的改进,全部用Python来进行数据的处理。对应的Python代码...原创 2016-12-04 10:20:52 · 964 阅读 · 0 评论 -
用Python和Shell结合进行词频统计
1、示例测试文本/Users/nisj/PycharmProjects/EsDataProc/word.txtfoo|-X-|foo|-X-|quux|-X-|iio|-X-|oo|-X-|pp|-X-|pp|-X-|oosee|-X-|you|-X-|you|-X-|again|-X-|welcome|-X-|testtest|-X-|ddd|-X-|gggg|-X-|gggacc原创 2016-11-23 11:33:08 · 935 阅读 · 0 评论 -
Python进行数据的Group by、sort、limit及从分表取数据一例
1、在Mysql单表上操作# mysql 单表select * from (select uid,sum(gift_point) gift_point from gift_record_61 where gift_id in(28,29) group by uid)x order by 2 desclimit 102、在Hive汇总表上计算hive上的表,是将Mysql上的原创 2016-11-24 15:25:15 · 6821 阅读 · 0 评论 -
Python中list的交、并、差集获取方法
1. 获取两个list 的交集# -*- coding=utf-8 -*-#方法一:a=[2,3,4,5]b=[2,5,8]tmp = [val for val in a if val in b]print tmp#[2, 5]#方法二print list(set(a).intersection(set(b)))2. 获取两个list 的并集print list(s原创 2016-11-24 16:21:47 · 22988 阅读 · 1 评论 -
Python进行数据的多表Join关联操作
在[Python进行数据的Join关联操作及从分表取数据一例]--->http://blog.csdn.net/babyfish13/article/details/53411743 一文中,数据的关联操作仅支持从表是key/vaule两列的形式;本文中要实现的关联对主从表的列数都没有限制。对于精通Java、Python及C等开发语言的用户,数据的关联取数采用本文介绍的for循环if判断的方式原创 2016-12-08 19:50:50 · 15008 阅读 · 0 评论 -
Python进行数据的多表去重示例
1、Python集合及其交并差操作python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算. sets 支持 x in set, len(set),和 for x in set。作为原创 2016-12-09 20:46:07 · 2315 阅读 · 1 评论 -
Pip安装及使用
1、下载pip并安装# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate# tar -xzvf pip-1.5.4.tar.gz# cd pip-1.5.4# python set原创 2016-12-16 20:40:44 · 1052 阅读 · 0 评论 -
使用Python脚本从Hive中取数据计算后加载到Mysql示例
由于没有在服务器上安装Python库的权限,所以此文中采用了Os操作Hive及Mysql库的方式进行数据的读取和写入。重点关注和学习:Python接收和传送通过Os操作数据库的方式;外部参数传送到Python并使用;Python进行数据分组汇总;利用Python的set对象进行数据的去重及交、并、差的操作;Python的set、list、str之间的相互转换;Pytho原创 2016-12-21 11:05:15 · 4968 阅读 · 1 评论 -
Python多线程调用Hive接口的MapReduce示例
1、单线程Hive调用/Users/nisj/PycharmProjects/EsDataProc/bi-static/hive-user_appsource_detail.py# -*- coding=utf-8 -*-import warningsimport datetimeimport timeimport oswarnings.filterwarnings("igno原创 2017-01-03 15:54:48 · 1506 阅读 · 0 评论 -
用Python编写MapReduce代码与调用-某一天之前的所有活跃用户统计(1)
需求:根据access_log数据,按平台与渠道维度统计出某一天之前的独立identifier数量。Hdfs文件对应的表结构信息:源表CREATE TABLE `bi_all_access_log`( `appsource` string, `appkey` string, `identifier` string, `uid` string)PARTIT原创 2016-12-23 17:30:35 · 1523 阅读 · 0 评论 -
用Python编写MapReduce代码与调用-某一天之前的所有活跃用户统计(2)
要实现的需求与相关表结构信息见【用Python编写MapReduce代码与调用-某一天之前的所有活跃用户统计(1)--->http://blog.csdn.net/babyfish13/article/details/53841990】考虑到此需求与词频统计有一定的相似性,所以代码由词频统计改编而成;且保证了无论如何调试和调用,数据的准确性。1、mapper/Users/nisj/Py原创 2016-12-23 18:38:51 · 930 阅读 · 0 评论 -
Python由词频统计改编的数据分组汇总
1、初步功能脚本/Users/nisj/PycharmProjects/EsDataProc/WordCount&Groupby.py# -*- coding=utf-8 -*-import reimport collections'''从传入的参数中,统计词频'''def count_word(words): result = {} # 大写转小写原创 2016-12-24 10:40:33 · 1564 阅读 · 0 评论 -
初学Python-threadpool多线程编程
1、示例及说明/Users/nisj/PycharmProjects/EsDataProc/thread_pool_ping.py# -*- coding=utf-8 -*-import threadpoolimport timeimport urllib2urls = [ 'http://www.163.com', 'http://www.sohu.com',原创 2016-12-24 17:22:03 · 1777 阅读 · 0 评论 -
Python获取时间范围内日期列表和周列表的函数
1、获取日期列表/Users/nisj/PycharmProjects/EsDataProc/bi-static/date_list.py# -*- coding=utf-8 -*-import datetimedef dateRange(beginDate, endDate): dates = [] dt = datetime.datetime.strptime(b原创 2017-01-04 13:59:40 · 11982 阅读 · 0 评论 -
Python根据指定日期获取周的信息
1、获取指定日期所在的周的每一天/Users/nisj/PycharmProjects/EsDataProc/bi-static/calc_day_in_week.py# -*- coding=utf-8 -*-import datetimedef week_get(vdate): dayscount = datetime.timedelta(days=vdate.isowe原创 2017-01-05 12:42:30 · 7777 阅读 · 2 评论 -
Python取周的相关信息的几个函数
主要包括:获取指定日期对应哪一年的第几周、获取当前日期对应哪一年的第几周、获取当前日期这一周的第一天的日期、获取指定周的第一天日期。/Users/nisj/PycharmProjects/EsDataProc/bi-static/getWeekInfo.py# -*- coding=utf-8 -*-import datetimedef getYearWeek(strdate):原创 2017-01-06 12:32:50 · 6507 阅读 · 0 评论 -
向python脚本传递参数的方法
需要模块:sys参数个数:len(sys.argv)脚本名: sys.argv[0]参数1: sys.argv[1]参数2: sys.argv[2]参数列表:sys.argv[1:]下面通过示例代码及操作来说明参数传递的具体使用。示例1:/Users/nisj/PycharmProjects/EsDataProc/par_transfter原创 2016-12-20 21:33:09 · 8864 阅读 · 0 评论 -
Python-threadpool多线程多个参数传入示例
主要找到了两种方法,一种是将参数构造成List进行传入;还有一种是将参数构造成dict进行传入。样例代码:/Users/nisj/PycharmProjects/EsDataProc/bi-static/ThreadPool_multiPar.py# -*- coding=utf-8 -*-import threadpoolimport timedef Main_Def(par原创 2017-01-09 18:38:42 · 13531 阅读 · 0 评论 -
Python多线程跑Hive批一例
本示例的功能主要是按天计算新设备在接下来一个月内每天的留存、注册转化、转化用户充值及注册用户留存等。程序分为三大部分:数据日期的处理、计算留存等指标的过程及批量代码多线程调度。1、数据日期处理的代码/Users/nisj/PycharmProjects/EsDataProc/RemainProcByDay/DayProc.py# -*- coding=utf-8 -*-import原创 2017-02-07 09:38:26 · 2192 阅读 · 2 评论 -
Python模块化开发组织代码程序示例
样例包含三部分代码,周的处理函数部分、业务数据处理部分及多线程跑批调度处理部分。代码按功能分类存放,有助于使代码更清晰,通过from...import的方式,使代码重复使用。另外,多线程的调用部分,有效处理了程序先后依赖及多程序串并行跑批问题,为以后相似问题的处理,提供了借鉴。1、周处理函数/Users/nisj/PycharmProjects/EsDataProc/Remain_原创 2017-01-16 19:14:31 · 2797 阅读 · 0 评论 -
用Python将统计数据不存在的记录按维度对应指标补齐(续:日数据情形)
接【Python多线程跑Hive批一例】-->http://blog.csdn.net/babyfish13/article/details/54906405及【用Python将统计数据不存在的记录按维度对应指标补齐】-->http://blog.csdn.net/babyfish13/article/details/54632508本文主要是将数据按日存储的结果表有些维度为空的记录给补起原创 2017-02-09 15:54:05 · 857 阅读 · 0 评论 -
用Python将统计数据不存在的记录按维度对应指标补齐
因为接到这个需求的时候,一开始想写Sql语句直接实现,发现比较麻烦;后来想通过Mysql存储过程来处理,但以前对Oracle存储过程熟悉,MySql存储过程代码不熟悉,要使用起来有一定的学习成本;最后选择用Python控制实现。谨此以记,供以后类似需要做参考。需求描述:一般的统计对格式如:”dim1,dim2,index1,index2,date“,如果维度对应的指标不存在,则结果表中就没原创 2017-01-20 17:07:24 · 1357 阅读 · 1 评论 -
Python计算注册用户当日发生行为示例
思路:根据观察新注册用户隔三天持续七天的用户是否留存,查看用户注册当日在弹幕发送、手机绑定等方面的用户行信息。1、用到的目标Hive及Mysql表-- 按间隔3天持续7天的方式计算drop table if exists bi_register_clustering_user_detail;create table bi_register_clustering_user_detail(原创 2017-02-20 15:22:39 · 1016 阅读 · 0 评论 -
Python读写配置文件
一、命令选项说明1) 基本的读取配置文件-read(filename) 直接读取ini文件内容-sections() 得到所有的section,并以列表的形式返回-options(section) 得到该section的所有option-items(section) 得到该section的所有键值对-get(section,option) 得到section中option的原创 2017-03-22 14:41:29 · 4213 阅读 · 1 评论 -
Python自动化拉取Mysql数据并装载到Hive
Mysql的数据表分为普通的表及以键值与256取模分表两种形式;流程顺序是先根据Mysql表结构进行Hive库上的建表,然后从Mysql下载到OS上,最后将数据装载到Hive库中。目前,暂不考虑数据的增量更新;主要考虑目前的数据环境较乱,可以较方便的将数据拉取到大数据平台,然后进行相关的计算。程序调用有并行和串行两种方式,是否用并行调度的那个脚本,取决于服务器的磁盘空间大小及源Mysql库原创 2017-03-21 17:41:02 · 1972 阅读 · 0 评论 -
Python将Hive汇总数据装载到Mysql
0、Hive里的临时表预计算此部分只是将功能在Hive里实现了,将结果存放在Hive表里;与后面的Python代码程序无关联性。--每个游戏各个房间按平均观看时长(观看总时长/房间内的总观看独立UID)前100名统计,以天为统计粒度drop table if exists xx_view_time_rank_byidentifier;create table xx_view_time_原创 2017-03-29 10:59:05 · 1608 阅读 · 0 评论 -
Python访问Mysql分表数据的方法示例
1、源表、目标表结构show create table user_profile_252;CREATE TABLE `user_profile_252` ( `uid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `nickname` varchar(45) CHARACTER SET utf8 NOT NULL COMMEN原创 2017-03-07 11:54:55 · 1344 阅读 · 2 评论 -
Python从阿里云Oss拉数据写入Hive表并进行相关处理
数据的流向是:先从Oss拉取原始日志文件数据,根据Hive分区表建表规范放在HDFS上;然后将数据根据不同的过滤条件分别插入到对应的其他中间表;由于空间有限,原始数据转移处理好之后,立马删除从Oss上拉取下来的日志数据;之后,再分别对各中间表数据利用Hive正则进行切分和提取,并根据需求进行汇总统计及tableau展现。1、Hive目标库建表drop table if exists xx_原创 2017-03-20 12:26:58 · 1692 阅读 · 0 评论