问题:redis如何删除模糊匹配到的keys?
解决:配合xargs进行删除操作
方法:
./redis-cli -h [$Addr] -a [$Password] -p [$Port] -n [$db] keys "[$Key]*" | xargs ./redis-cli -h [$Addr] -a [$Password] -p [$Port] -n [$db] del
例如:
redis-cli -n 1 keys "school*" | xargs redis-cli -n 1 del
问题:redis如何删除模糊匹配到的keys?
解决:配合xargs进行删除操作
方法:
./redis-cli -h [$Addr] -a [$Password] -p [$Port] -n [$db] keys "[$Key]*" | xargs ./redis-cli -h [$Addr] -a [$Password] -p [$Port] -n [$db] del
例如:
redis-cli -n 1 keys "school*" | xargs redis-cli -n 1 del
问题:数据量大,接口请求太慢,如何判断是哪个语句拖慢了时间?
解决:可以使用logger进行debug,输出每个语句的运行时间
方法:
将下面代码与你的create_engine放一起就可以了
from sqlalchemy import event
from sqlalchemy.engine import Engine
import time
import logging
logging.basicConfig()
logger = logging.getLogger("myapp.sqltime")
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler("test_log.log", encoding="utf-8")
logger.addHandler(fh)
问题:python(superset)如何连接达梦数据库?sqlalchemy如何连接dm8?
解决:需要两个驱动dmPython,sqlalchemy_dm
方法:
1、复制dmPython,sqlalchemy等文件夹(本人superset和达梦数据库不在同一服务器,所以需要复制)
cd /opt/dm8 // 本人达梦数据库安装服务器
mkdir fakedm8
cp -r ./bin ./fakedm8
cp -r ./include ./fakedm8
cp -r ./drivers/python/dmPython/ ./fakedm8
// 注意:使用2.0.0报错AttributeError: type object 'DMDialect_dmPython' has no attribute 'dbapi'
// 使用1.1.10时报错AttributeError: 'DMExecutionContext_dmPython' object has no attribute 'compiled_parameters'
cp -r ./drivers/python/sqlalchemy1.4.6/ ./fakedm8
scp -r fakedm8/ hadoop01:~/ // 将复制的文件夹传送到superset服务器
2、配置fakedm8路径
mv ~/fakedm8/ /opt/module/
vim ~/.bash_profile // 加入下面三行内容
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/module/fakedm8/bin"
export DM_HOME="/opt/module/fakedm8"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
source ~/.bash_profile
问题:错误:依赖检测失败:libncurses. so. 5()(64bit) 被mysql- community-client-5.7.28-1.el7.x86_64 需要
方法:
yum install libncurses*
问题:hive表的字段数据中有NUL数据,导致无法将hive数据导出
解决:使用regexp_replace(CFWH, '\x00', ''),x00可以匹配到NUL
方法:
在数据从ods层进入dwd层时进行数据治理
// 在hive中的查询语句
select sxh, regexp_replace(replace(CFWH, decode(unhex(hex(127)), "US-ASCII"), ""), "\\x00", "")
from ods_xscfjl where sxh in (1020,1107);
# 脚本中的调用语句
dwd_cfjl="
set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
insert overwrite table ${APP}.dwd_cfjl partition(dt='$do_date')
select
SXH,
XH,
regexp_replace(replace(CFWH, decode(unhex(hex(127)), 'US-ASCII'), ''), '\\\\x00', '') CFWH,
CJSJ,
CJZ
from ${APP}.ods_xscfjl
where dt='$do_date';
"
注:'x00' 需要加一个转义符,正则中写'\x00',decode(unhex(hex(127)), 'US-ASCII')是过滤字段中的DEL字符