背景:
tableau通过mysql连接doris。
tableau使用的mysql协议,计算标准差时用到的std函数,在doris中使用的是stddev函数,所以在计算时会报错,以下是为了解决这个问题。
一、 参考网址(版本:doris1.0.0)
源码下载:
http://doris.incubator.apache.org/zh-CN/downloads/downloads.html
二、 下载源码
http://doris.incubator.apache.org/zh-CN/downloads/downloads.html
三、 修改源码
3.1 解压
3.2 检索stddev(使用软件:filelocaltor pro)
观察出大概有:stddev STDDEV StdDev Stddev
3.3 更改文件名
这些文件中带有stddev的都换成std
3.4 内容替换stddev
全选后,使用NotePad++打开(在打开前,清理notepad++中之前打开的文件)
输入要替换的内容,进行:替换所有打开文件
替换内容
stddev->std Stddev->Std STDDEV->STD StdDev->Std
替换完成后,挨个文件进行保存
再次使用filelocaltor pro进行查看,检索不到stddev的时候,就可以了
3.5 修正std函数标记
查看刚刚修改的内容
找到FunctionSet.java,可以看到std最前面是个数字的,这就是要修改的标记,将最前面的数字修改成:原数字进行减3(因为该数字代表的是数字之后,到EPN之前的字母个数,由于之前这里是stddev,现在改成了std,所以位数少了3,故要改掉这里,否则std函数的标记对应不上),然后保存
到此为止,要修改的内容就结束了
3.6 打包
将修改后的内容打包,打zip压缩包(也可以使用7-zip打包tar.gz)
3.7 源码上传及权限配置
源码上传到指定文件夹(例如:/opt/doris)
使用unzip解压zip压缩包
解压完成后,发现里面的sh文件都没有执行的权限(如果解压的tar.gz文件,不会有权限问题,直接跳过),如下图
由于源码根目录和子目录会有很多.sh文件,一一赋权太过麻烦,此处使用shell脚本进行赋权
①在源码的根目录的同级,创建一个文件: vim chsh;
②将下面源码粘进去
③赋权:执行权限 : chmod +x chsh;
④然后执行 : ./chsh 对应目录
# 采集一个函数
readDir() {
# 获取传入的目录路径
local dir=$1
# 循环指定目录下的所有文件
local files
files=$(ls "$dir")
for file in $files; do
local path="$dir/$file" #指的是当前遍历文件的完整路径
# 判断是否是目录,如果是目录则递归遍历,如果是文件则打印该文件的完整路径
if [ -d "$path" ]; then
readDir "$path"
else
if [[ $path =~ ".sh" ]]; then
chmod +x $path
fi
fi
done
}
# 调用函数
readDir $1
赋权限执行后,剩余的就按照编译指南进行(要注意最后编译的时候,提前判断cpu是否支持avx2指令)