mysql kylin 时间处理
日期时间 Extract(选取)函数
在year(),只截取部分无效的时候,可以采用extract 进行截取
time.time()时间处理
想要输出正常时间,需要把字符转为时间元组,在进行格式 strftime 时间格式处理,
hive取字段为周几
pmod(datediff(‘字段’,‘2012-01-01’),7) 输出值为当天的周几
datediff结束减开始日期,pmod正的a除以b的余数,相当于相差的日期时间除7天,余数结果就是周几
crontab定时任务
如果手动执行脚本可以,添加到 定时任务不行,基本上是应该环境变量问题,或者路径没有写全
对于环境变量需要在脚本头顶加上:source /etc/profile
这样就OK啦
Spark SQL预防倾斜
数据倾斜影响节点间数据处理速度,可在SQL 末尾添加distribute by rand()来防止数据倾斜
SQL中把字段内容大小写转化
将小写转换为大写:UPPER(id)
将大写转换为小写: LOWER(id)
sql排序取前几位
row_number() OVER (PARTITION BY COL1 ORDERBY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(该编号在组内是连续并且唯一的)
spark INFO 信息
INFO CodeGenerator 初始化,类,
INFO DAGScheduler Action操作生产DRG, 划分Stage,生成Task并最终运行 transform
sql 数字开头的库名与表名操作
加引号的操作不是对数字,而是应把整个库名加上“ ”引号操作
针对mongo 中表也是数字开头,需要使用[“collection name”] ,如 db[“2016”]
python bug
UnboundLocalError: local variable ‘xxx’ referenced before assignment
该问题是由于全局变量与局部变量引起,不是没有事先声明,通常是返回值没有给予初始值,global关键字表示局部变量
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 1: ordinal not in range(128)
该问题是由于中文解码问题导致
方案一:在出现中文字符的前面加上:u"中文",使用encode和decode
方案二: import sys
reload(sys)
sys.setdefaultencoding(‘utf8’)
该方法可能还是无用的话,进行单独encode, codecs 专门用作编码转换,使用 codecs.encode(str,‘utf-8’),将编码转换为utf-8
方案三:json.dumps 时使用ensure_ascii=False,如果转化中带有中文,然后没有编码,会报错,因为json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False,可以改为Ture,或者在中文前加u,把编码改为unicode