目前Kylin已经可以与superset进行集成,详细的说明可参考kylin官方文档: [ superset ]。
但是superset原生并不支持kylin,因此我们需要安装Kyligence公司提供的kylinpy工具。这是一个python的kylin客户端工具,可以通过输入命令获取相应的kylin信息。安装好这个工具之后,我们就可以通过superset连接kylin进行访问了。相应的安装步骤和使用,kylin在官方文档中已经说的非常清楚了,这里就不再一一赘述。这篇文档主要将非root权限下的kylinpy和superset安装以及相关配置。
由于所有的开发工作都是通过ssh连接至服务器完成,一般都是登录到个人账号或者某个公共账号进行操作。因此一般都没有root权限,每次安装软件都需要提交工单,申请root权限,非常麻烦。因此,这次集成Kylin与Superset都是在非root权限下操作的。下面是主要的安装步骤。
Python及相关软件安装
由于服务器上默认安装的是python2.7.3版本,已经比较旧了。因为我们在指定的路径中安装了2.7.9版本的,详细安装步骤如下所示:
代码语言:javascript复制//下载相应版本的python源码
wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
//解压源码
tar zxvf Python-2.7.9.tar.xz
//编译与安装,--prefix选项可以执行安装目录,这三步都需要在源码目录下执行
./configure --prefix=/home/nrpt/kylin/usr
make
make install
安装完成之后我们就可以在/home/nrpt/kylin/usr路径下看到安装好的python了。执行/home/nrpt/kylin/usr/bin/python可以验证是否安装成功:
安装好了python之后,为了后面安装软件的方便,我们将路径/home/nrpt/kylin/usr/bin加入环境变量PATH中。这样,我们下次就可以直接使用python命令进行操作,而不需要使用/home/nrpt/kylin/usr/bin/python。修改完PATH变量之后还需要使用source命令更新一下,我们可以通过以下命令验证是否修改成功:
除此之外,我们还需要安装setuptools和pip,这两个软件的安装过程基本类似,我们以setuptools为例:
代码语言:javascript复制//下载源码
wget https://pypi.python.org/packages/0a/40/a740a4890d9cc8f725f67da158ab250d3926b874e0f7cb85bdc836e3d069/setuptools-24.0.0.tar.gz#md5=75e7269ab0425efe590acbc834575f13
//解压源码
tar zxvf setuptools-24.0.0.tar.gz
//编译与安装,需要在源码目录下执行
python setup.py build
python setup.py install
pip的安装与上面基本一样,这里就不再赘述。由于我们在前面已经将自定义路径加入环境变量PATH中,因此,这里可以直接通过easy_install和pip命令使用我们自己安装的版本,而并非/usr/bin下面的easy_install和pip,可以通过which命令进行验证:
到这里,python相关的环境都已经安装完毕,我们在/home/nrpt路径下进行相应的python安装操作,使用的都是我们自己所安装的版本(位于/home/nrpt/kylin/usr/bin)。除了上面将../bin加入到环境变量PATH之外,我们还需要将/home/nrpt/kylin/usr/lib/python2.7/site-packages加入到环境变量PYTHONPATH中。这个是为了增加python模块的搜索路径。
kylinpy安装
为了在superset中连接kylin,我们首先需要安装kylinpy。在root权限下安装kylinpy非常简单,只需要通过下列命令即可:
代码语言:javascript复制pip install --upgrade kylinpy
但是我们现在需要在非root用户下安装到指定目录,就需要多一些操作,主要步骤如下所示:
代码语言:javascript复制//从git上下载kylinpy源码
https://github.com/Kyligence/kylinpy.git
//在kylinpy目录下执行该命令
pip install . --install-option="--prefix=/home/nrpt/kylin/usr/local" --ignore-installed --upgrade
其中,–ignore-installed选项表示忽略目前机器上已安装的相关软件,会将kylinpy所依赖的其他相关模块也重新安装到指定目录下。为了与python环境分开,我们将kylinpy安装到了/home/nrpt/kylin/usr/local路径下。安装完成后,我们同样将/home/nrpt/kylin/usr/local/bin添加到环境变量PATH中。因为我们安装到了新的路径,因此/home/nrpt/kylin/usr/local/lib/python2.7/site-packages路径也要加入到PYTHONPATH环境变量中。我们可以通过官方提供的命令来测试kylinpy是够安装成功了。如下所示:
kylin服务也部署在该服务器上,所以直接使用localhost即可。该命令输出了project下的所有cube名称。可以看到,得到了正确的结果。因此,kylinpy已经安装成功。
superset安装
安装完kylinpy之后,我们需要安装superset。安装superset的过程与安装kylinpy类似,可以通过如下命令直接安装:
代码语言:javascript复制pip install superset --install-option="--prefix=/home/nrpt/kylin/usr/local" --ignore-installed --upgrade
在安装过程中会下载其他的一些依赖模块,如果下载速度很慢,可以尝试使用以下安装命令:
代码语言:javascript复制pip install -i https://pypi.tuna.tsinghua.edu.cn/simple superset --install-option="--prefix=/home/nrpt/kylin/usr" --ignore-installed
本人在实际安装过程中发现,使用第二条命令安装,比第一条命令安装要快的多。安装完成后,会在/home/nrpt/kylin/usr/local/lib/python2.7/site-packages下面看到superset对应的目录。此时,superset已经成功安装。安装完成之后,我们就可以启动superset进行kylin的连接配置了。 注:在本次安装过程中,并没有安装virtualenv,可能是由于root用户下之前已经安装了virtualenv,如果需要的话,读者可自行安装virtualenv,安装方法跟superset一样,直接使用pip安装即可。
superse初始化
关于superset的详细安装和配置信息可以参考:https://superset.incubator.apache.org/installation.html。我们在这里就只列举出一些重要的步骤。主要步骤如下所示:
代码语言:javascript复制# Create an admin user (you will be prompted to set username, first and last name before setting a password)
fabmanager create-admin --app superset
# Initialize the database
superset db upgrade
# Load some data to play with
superset load_examples
# Create default roles and permissions
superset init
# Start the web server on port 8088, use -p to bind to another port
superset runserver
# To start a development web server, use the -d switch
# superset runserver -d
superset默认启动在8088端口,可以通过配置文件进行修改,这里就不再一一赘述。启动之后,我们就可以通过web页面访问superset进行相应的操作了。可以看到,目前我们已经能够通过页面对superset进行访问了:
通过第一步中创建的用户名和密码就可以登录进行操作了,目前,最新版本的superset已经支持中文了。至此,superset就已经安装完成,下面将继续介绍如何在superset中配置kylin,并进行访问。
superset配置连接kylin
superset安装成功之后,我们就可以在superset中进行配置,来访问kylin。首先,新增数据库,如下所示:
然后,在url中进行配置,可以通过如下url来配置对kylin的访问:
代码语言:javascript复制kylin://user:password@ip:7070/project
其中,user是用来登录kylin的用户名,ip是kylin部署的服务器,project是kylin中的project名称。我们可以对url进行测试连接,如下图所示:
可以看到,我们已经连接成功,learn_kylin就是我们kylin中对应的project。保存之后,我们可以查询该数据库的详细信息,如下图所示:
配置完成之后,我们就可以在sql编辑器中使用测试sql进行相应的查询了,如下所示:
我们也可以在kylin中执行相同的sql来验证正确性:
我们可以看到,查询结果一样。下面是测试sql:
代码语言:javascript复制select YEAR_BEG_DT,
MONTH_BEG_DT,
WEEK_BEG_DT,
META_CATEG_NAME,
CATEG_LVL2_NAME,
CATEG_LVL3_NAME,
OPS_REGION,
NAME as BUYER_COUNTRY_NAME,
sum(PRICE) as GMV,
sum(ACCOUNT_BUYER_LEVEL) ACCOUNT_BUYER_LEVEL,
count(*) as CNT
from KYLIN_SALES
join KYLIN_CAL_DT on CAL_DT=PART_DT
join KYLIN_CATEGORY_GROUPINGS on SITE_ID=LSTG_SITE_ID and KYLIN_CATEGORY_GROUPINGS.LEAF_CATEG_ID=KYLIN_SALES.LEAF_CATEG_ID join KYLIN_ACCOUNT on ACCOUNT_ID=BUYER_ID
join KYLIN_COUNTRY on ACCOUNT_COUNTRY=COUNTRY
group by YEAR_BEG_DT, MONTH_BEG_DT, WEEK_BEG_DT, META_CATEG_NAME, CATEG_LVL2_NAME, CATEG_LVL3_NAME, OPS_REGION, NAME
至此,kylin与superset的集成就已经完成。我们就可以通过superset对kylin中的数据进行分析了。
参考文档
- superset官方文档
- linux下python安装到指定目录
- kylinpy官方git地址
- kylin集成superset官方文档
- 更换pip源
- 为Python添加默认模块搜索路径
- pip安装package到不同的路径