Kylin(二)安装使用

安装

参考案例:https://my.oschina.net/u/4350719/blog/4686802

Hadoop 环境

Kylin 依赖于 Hadoop 集群处理大量的数据集。您需要准备一个配置好 HDFS,YARN,MapReduce,Hive, HBase,Zookeeper 和其他服务的 Hadoop 集群供 Kylin 运行。

Kylin 可以在 Hadoop 集群的任意节点上启动。方便起见,您可以在 master 节点上运行 Kylin。但为了更好的稳定性,我们建议您将 Kylin 部署在一个干净的 Hadoop client 节点上,该节点上 Hive,HBase,HDFS 等命令行已安装好。

运行 Kylin 的 Linux 账户要有访问 Hadoop 集群的权限,包括创建/写入 HDFS 文件夹,Hive 表, HBase 表和提交 MapReduce 任务的权限。

Kylin下载

Apache Kylin下载网站 下载一个适用于您 Hadoop 版本的二进制文件。例如,适用于 HBase 1.x 的 Kylin 2.5.0 可通过如下命令行下载得到:

cd /usr/local/
wget http://mirror.bit.edu.cn/apache/kylin/apache-kylin-2.5.0/apache-kylin-2.5.0-bin-hbase1x.tar.gz

解压 tar 包,配置环境变量 $KYLIN_HOME 指向 Kylin 文件夹。

tar -zxvf apache-kylin-2.5.0-bin-hbase1x.tar.gz
cd apache-kylin-2.5.0-bin-hbase1x
# Kylin_HOME
export KYLIN_HOME=/usr/local/kylin-3.1.1
export PATH=$KYLIN_HOME/bin:$PATH

我下载安装的是这个:
在这里插入图片描述

从 v2.6.1 开始, Kylin 不再包含 Spark 二进制包; 如果需要,您需要另外下载 Spark,然后设置 SPARK_HOME 系统变量到 Spark 安装目录:

export SPARK_HOME=/usr/local/spark
export PATH=$SPARK_HOME/bin:$PATH

或者使用脚本下载:

$KYLIN_HOME/bin/download-spark.sh

由于上面在/etc/profile文件中新增了内容,键入source /etc/profile让刚刚做的修改立即生效

Kylin目录结构

  • bin: shell 脚本,用于启动/停止 Kylin,备份/恢复 Kylin 元数据,以及一些检查端口、获取 Hive/HBase 依赖的方法等;
  • conf: Hadoop 任务的 XML 配置文件,这些文件的作用可参考配置页面
  • lib: 供外面应用使用的 jar 文件,例如 Hadoop 任务 jar, JDBC 驱动, HBase coprocessor 等.
  • meta_backups: 执行 bin/metastore.sh backup 后的默认的备份目录;
  • sample_cube 用于创建样例 Cube 和表的文件。
  • spark: 自带的 spark。
  • tomcat: 自带的 tomcat,用于启动 Kylin 服务。
  • tool: 用于执行一些命令行的jar文件。

配置kylin.properties

  • 进入conf目录,将 kylin.properties.template改成kylin.properties,命令:mv kylin.properties.template kylin.properties

  • 编辑kylin.properties文件,添加以下内容

     # kylin集群节点配置:node1是我的主机名,因为kylin部署为一个节点
     kylin.server.cluster-servers=node1:7070
     #配置节点类型(kylin节点模式分为all、query(查询模式)、job(任务构建模式))
     #因为我们只部署一个节点kylin,所以配置为all
     kylin.server.mode=all
    

在这里插入图片描述
在这里插入图片描述

验证检查环境

键入以下命令以分别检查环境

 # 检查环境
 bin/check-env.sh
 # 检查hive依赖
 bin/find-hive-dependency.sh
 # 检查hbase依赖
 bin/find-hbase-dependency.sh
  1. # 检查环境 进入Kylin - bin目录下执行 check-env.sh
    在这里插入图片描述

  2. # 检查hive依赖 进入Kylin - bin目录下执行 find-hive-dependency.sh下面遇到的问题是在购买的阿里EMR服务器上遇到的找不到hive-site.xml的错误;
    该问题是因为Kylin 会自动从环境中读取 Hadoop 配置(core-site.xml),Hive 配置(hive-site.xml)和 HBase 配置(hbase-site.xml)。而此时找不到并且它提示需要配置 $HIVE_CONF指向hive-site.xml。
    解决方法:在 /etc/profile配置环境变量。可是我发现该文件中是空白的???(没有 export 字样)但是可以执行cd $HIVE_HOMEcd $HIVE_CONF_HOMEcd $HIVE_CONF_DIR命令。最终通过grep -r "$KYLIN_HOME" / grep -r "关键字" "查找路径" 找到HIVE HOME的环境变量配置在哪里。
    在这里插入图片描述
    阿里云EMR服务器将 各个插件的环境变量配置在了profile.d 目录下(方便维护权限)。然后进入HIVE.sh 添加下面的配置。
    在这里插入图片描述

  3. # 检查hbase依赖 进入Kylin - bin目录下执行find-hbase-dependency.sh,检查hbase 依赖项的时候报错 找不到 common 包
    解决:http://92072234.wiz03.com/share/s/2i1O8Q1L1k042IDoOy3h7BgH2K4G6J2SoQv42Xc4b01xpCrj找到 并且编辑 vim $HBASE_HOME/bin/hbase。发现没有将自己的jar包添加class path 中
    在这里插入图片描述
    那我需要做的事情就是将自己的jar包添加class path 中,将CLASSPATH修改为:

    # CLASSPATH initially contains $HBASE_CONF_DIR
    CLASSPATH="${HBASE_CONF_DIR}"
    CLASSPATH=${CLASSPATH}:$JAVA_HOME/lib/tools.jar:$HBASE_HOME/lib/*
    
  4. 最终/etc/profile

    #JAVA_HOME
    JAVA_HOME=/usr/local/jdk1.8
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
    
    #ZK_HOME
    export ZK_HOME=/usr/local/zookeeper-3.4.11
    export PATH=$ZK_HOME/bin:$PATH
    
    #HADOOP_HOME
    export HADOOP_HOME=/usr/local/hadoop-3.2.1
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export HADOOP_YARN_HOME=$HADOOP_HOME
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    
    #HBASE_HOME
    export HBASE_HOME=/usr/local/hbase-2.2.4
    export PATH=$HBASE_HOME/bin:$PATH
    
    # HIVE_HOME
    export HIVE_HOME=/usr/local/hive-3.1.2
    export PATH=$HIVE_HOME/bin:$PATH
    export HIVE_CONF_HOME=$HIVE_HOME/conf
    export HCAT_HOME=$HIVE_HOME/hcatalog
    export PATH=$HCAT_HOME/bin:$PATH
    
    # Kylin_HOME
    export KYLIN_HOME=/usr/local/kylin-3.1.1
    export PATH=$KYLIN_HOME/bin:$PATH
    

启动/停止Kylin

 # 启动Kylin
 bin/kylin.sh start
 # 停止Kylin
 bin/kylin.sh stop

guava.jar版本问题

进入Kylin - bin目录下执行 kylin.sh start
在这里插入图片描述

该问题在该环境信息下:Hadoop3.2.1 HBase2.2.4 Hive3.1.2。安装Hive3.1.2的时候也出现过

安装Hive的解决办法:

  1. com.google.common.base.Preconditions.checkArgument这个类所在的jar包为:guava.jar

  2. hadoop-3.2.1(路径:hadoop\share\hadoop\common\lib)中该jar包为 guava-27.0-jre.jar;而hive-3.1.2(路径:hive/lib)中该jar包为guava-19.0.1.jar

  3. 将jar包变成一致的版本:删除hive中低版本jar包,将hadoop中高版本的复制到hive的lib中。

此时又出现了该问题。可是我们的guava已经修改为27 版本了。为什么还有该问题?

原因:Kylin 的源数据服务是 Hive,依赖与 Hive 中 一个guava包。可是Hive 框架中 源码中pom.xml 该guava包的版本并没有统一,有的地方还是19版本。

官网提供了解决方案:

启动 Kylin

运行 $KYLIN_HOME/bin/kylin.sh start 脚本来启动 Kylin,界面输出如下:

Retrieving hadoop conf dir...
KYLIN_HOME is set to /usr/local/apache-kylin-2.5.0-bin-hbase1x
......
A new Kylin instance is started by root. To stop it, run 'kylin.sh stop'
Check the log at /usr/local/apache-kylin-2.5.0-bin-hbase1x/logs/kylin.log
Web UI is at http://<hostname>:7070/kylin

:如果在启动 kylin 时遇到如下报错(Hadoop3 环境下可能出现):

Caused by: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
	at org.apache.hadoop.conf.Configuration.set(Configuration.java:1358)
	at org.apache.hadoop.conf.Configuration.set(Configuration.java:1339)
	at org.apache.kylin.common.util.HadoopUtil.healSickConfig(HadoopUtil.java:77)
	at org.apache.kylin.common.util.HadoopUtil.getCurrentConfiguration(HadoopUtil.java:63)
	at org.apache.kylin.storage.hbase.HBaseConnection.newHBaseConfiguration(HBaseConnection.java:170)
	at org.apache.kylin.storage.hbase.HBaseConnection.get(HBaseConnection.java:259)
	at org.apache.kylin.storage.hbase.HBaseResourceStore.getConnection(HBaseResourceStore.java:96)
	at org.apache.kylin.storage.hbase.HBaseResourceStore.createHTableIfNeeded(HBaseResourceStore.java:119)
	at org.apache.kylin.storage.hbase.HBaseResourceStore.<init>(HBaseResourceStore.java:89)
	... 8 more

可以尝试如下方法解决:

下载guava-28.0-jre.jar, 将其放到$KYLIN_HOME/tool/$KYLIN_HOME/tomcat/lib/目录下,然后重启kylin bin/kylin.sh restart

CuratorConnectionLossException

org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = ConnectionLoss

2021-02-01 19:21:46,453 ERROR [main] curator.ConnectionState:228 : Connection timed out for connection string (node1:2181:2181,node2:2181:2181,node3:2181:2181/kylin/kylin_metadata) and timeout (15000) / elapsed (24928)
org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = ConnectionLoss

日志信息提示:node1:2181:2181,node2:2181:2181,node3:2181:2181。说明多了一次2181。这是由于:读取的是配置文件hbase-site.xml的hbase.zookeeper.quorum,该项只需配置Host不需要配置端口号Port,改回来之后重启hbase就好了。
在这里插入图片描述

错误

ERROR: Check hive's usability failed, please check the status of your cluster

解决 在kylin的安装目录下进入bin目录然后找到check-hive-usability.sh,之后键入命令vim check-hive-usability.sh编辑该文件,修改timeLeft的值为100(默认值为60),见下图
在这里插入图片描述

熟悉使用 Kylin

不会涉及到 衍生维度,分区cube之类的。

进入web界面

如果成功启动,在terminal中键入jps命令会出现RunJar的进程,terminal末尾的显示的信息如下图
在这里插入图片描述

Kylin 启动后您可以通过浏览器 http://:7070/kylin 进行访问。
其中 `` 为具体的机器名、IP 地址或域名,默认端口为 7070。
初始用户名和密码是 ADMIN/KYLIN
服务器启动后,您可以通过查看 $KYLIN_HOME/logs/kylin.log 获得运行时日志。

创建项目

登陆kylin后,点击左上角的+号来创建Project:
在这里插入图片描述

同步hive表

点击Model->Data Source->Load Table From Tree,
Kylin会读取到Hive数据源中的表并以树状方式显示出来,你可以选择自己要使用的表,然后点击sync进行将其加载到kylin。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L8JPULfW-1618063006077)(Kylin - 麒麟.assets/image-20210205160315132.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k4c1OzT5-1618063006078)(../笔记/image-20210205160448825.png)]

Failed to load Hive Table

选择hive表,报错?

2021-02-02 17:30:14,875 ERROR [http-nio-7070-exec-5] controller.TableController:132 : Failed to load Hive Table
java.lang.RuntimeException: cannot get HiveTableMeta
	at org.apache.kylin.source.hive.HiveMetadataExplorer.loadTableMetadata(HiveMetadataExplorer.java:68)

报错原因是kylin在load表的时候,需要调用StorageSchemaReader接口的readSchema方法,默认的default是没有这个实现方法的就会报错。

解决方法是在 hive-site.xml中 添加以下属性

<property>
<name>metastore.storage.schema.reader.impl</name>
<value>org.apache.hadoop.hive.metastore.SerDeStorageSchemaReader</value>
</property>

关联成功
在这里插入图片描述

创建Model

  1. new Model

  2. model信息

  3. 选择事实表,以及维度表
    在这里插入图片描述

  4. 添加Lookup Table时需要设置与事实表的JOIN条件。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-apquPXnG-1618063006079)(Kylin - 麒麟.assets/add_lookup_table-1612515127037.png)]

  5. 然后点击Next到下一步添加Dimension(维度)
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xe0P3iRg-1618063006080)(Kylin - 麒麟.assets/image-20210205164826148.png)]

  6. 点击Next下一步添加Measure(度量)
    在这里插入图片描述

  7. 点击Next下一步跳转到设置时间分区列和过滤条件页面,时间分区列用于增量构建时选择时间范围,如果不设置时间分区列则代表该model下的cube都是全量构建。过滤条件会在打 平表 时用于where条件。
    平表意思是(维度和度量组成的中间表)会在生成cube的时候有截图

创建Cube

1.先要选择该Cube是 属于哪个 Model的。定义cube信息
在这里插入图片描述2. 点击Next到下一步添加Dimension,Lookup Table的维度可以设置为Normal(普通维度)或者Derived(衍生维度)两种类型,默认设置为衍生维度,衍生维度代表该列可以从所属维度表的主键中衍生出来,所以实际上只有主键列会被Cube加入计算。

我这里选择的都是事实表的维度
在这里插入图片描述3. 选择度量

点击Next到下一步,点击+Measure来添加需要预计算的度量。Kylin会默认创建一个Count(1)的度量。Kylin支持SUM、MIN、MAX、COUNT、COUNT_DISTINCT、TOP_N、EXTENDED_COLUMN、PERCENTILE八种度量。请为COUNT_DISTINCT和TOP_N选择合适的返回类型,这关系到Cube的大小。添加完成之后点击ok,该Measure将会显示在Measures列表中。

 **函数SUM的返回类型必须是 [ smallint,int4,double,tinyint,numeric,long8,integer,real,float,decimal,bigint ] 之一。**

在这里插入图片描述
在这里插入图片描述
4.其他
在这里插入图片描述
6. 创建完成

查看cube信息

SQL

查看到创建完成cube的sql。该sql体现了 平表的逻辑。
在这里插入图片描述

Planner

注意在Kylin中每一种维度的组合 都管它叫做 Cuboid 。下图一共有 4095 个 ,图表展示。最下面是各个维度

4095 = 2的12次方-1 (2^12)-1
在这里插入图片描述

构建Cube

  1. 上一个步骤创建好的Cube只有定义,而没有计算好的数据,它的状态是‘DISABLED’,是不可以查询的。要想让Cube有数据,还需要对它进行构建。

  2. Cube的构建方式通常有两种:全量构建和增量构建。

  3. 点击要构建的Cube的Actions列下的Action展开,选择Build,如果Cube所属Model中没有设置时间分区列,则默认全量构建,直接提交构建任务。
    在这里插入图片描述

  4. 如果设置了时间分区列,则会出现如下页面,在这里你要选择构建数据的起止时间,然后点击Submit
    在这里插入图片描述

  5. 然后你可以在Monitor页面观察构建任务的状态。Kylin会在页面上显示每一个步骤的运行状态、输出日志以及MapReduce任务。可以在${KYLIN_HOME}/logs/kylin.log中查看更详细的日志信息。
    在这里插入图片描述

  6. 任务构建完成后,Cube状态会变成READY,并且可以看到Segment的信息。
    在这里插入图片描述

  7. 构建过程中发生的错误信息:

    check status java.io.IOException: java.net.ConnectException: Your endpoint configuration is wrong; For more details see: http://wiki.apache.org/hadoop/UnsetHostnameOrPort
    在这里插入图片描述

查询Cube

Cube构建完成后,在Insight页面的Tables列表下面可以看到构建完成的Cube的table,并可以对其进行查询.查询语句击中Cube后会返回存储在Hbase中的预计算结果。
在这里插入图片描述

  1. 查询的时候报错:java.lang.NoClassDefFoundError : org.apache.commons.lang.text.StrSubstitutor;

  2. 查看kylin的源码发现在 KylinConfigBase 类中 使用了 StrSubstitutor 类。并且pom.xml中也没有依赖
    在这里插入图片描述

  3. 那也就说明了需要依赖hive以及hbase的该jar包。后来查看hive下是有这个jar包的。而hbase没有。

    将hive的那个jar包复制到hbase的目录下了。又添加了/etc/profile文件的配置。修改了很多地方记不清楚了。贴一个最新的配置信息吧

    vim /etc/profile

    #JAVA_HOME
    JAVA_HOME=/usr/local/jdk1.8
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
    
    #ZK_HOME
    export ZK_HOME=/usr/local/zookeeper-3.4.11
    export PATH=$ZK_HOME/bin:$PATH
    
    #HADOOP_HOME
    export HADOOP_HOME=/usr/local/hadoop-3.2.1
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export HADOOP_YARN_HOME=$HADOOP_HOME
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    
    #HBASE_HOME
    export HBASE_HOME=/usr/local/hbase-2.2.4
    export PATH=$HBASE_HOME/bin:$PATH
    
    # HIVE_HOME
    export HIVE_HOME=/usr/local/hive-3.1.2
    export PATH=$HIVE_HOME/bin:$PATH
    export HIVE_CONF_HOME=$HIVE_HOME/conf
    export HCAT_HOME=$HIVE_HOME/hcatalog
    export PATH=$HCAT_HOME/bin:$PATH
    # Kylin_HOME
    export KYLIN_HOME=/usr/local/kylin-3.1.1
    export PATH=$KYLIN_HOME/bin:$PATH
    

    vim/usr/local/hbase/bin/hbase

    # CLASSPATH initially contains $HBASE_CONF_DIR
    CLASSPATH="${HBASE_CONF_DIR}"
    CLASSPATH=${CLASSPATH}:$JAVA_HOME/lib/tools.jar:$HBASE_HOME/lib/*
    

    在这里插入图片描述

了解Kyliin构建Cube的过程

  1. 创建临时的Hive平表(从Hive读取数据)。说白了就是将 事实表,维度表的 维度和度量全部查询出来的结果作为一张平表。(也就是我们此次构建用到的所有数据结合起来)
    在这里插入图片描述

  2. 计算各维度的不同值,并收集各Cuboid的统计数据。

  3. 创建并保存字典。

  4. 保存Cuboid统计信息。

  5. 创建HTable。

  6. 计算Cube(一轮或若干轮MapReduce)。

  7. 将Cube的计算结果转成HFile。

  8. 加载HFile到HBase。

  9. 更新Cube元数据。

  10. 垃圾回收

Kylin使用beeline连接hive

之前一直是通过cli连接hive,由于系统升级需要通过beeline连接。此处的hive已经配置了自定义安全认证

官网教程:http://kylin.apache.org/docs/howto/howto_use_beeline.html

我的配置文件:-n 指定用户名,-p指定密码,-u指定和hiveServer2 连接地址 问号后面内容为了支持操作hive的事务表。

-u 'jdbc:hive2://localhost:10000?hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;hive.support.concurrency=true;'
在这里插入图片描述

kylin查询api

之前已经成功创建了kylin的cube,并且可以使用 web ui查询。但除了通过web ui进行操作,我们还可以使用api调用。

RestFul API
在使用之前,我们要先进行认证,目前Kylin使用 basic Authentication。Basic Authentication是一种非常简单的访问控制机制,它先对账号密码基于Base64编码,然后将其作为请求头添加到HTTP请求头中,后端会读取请求头中的账号密码信息以进行认证。

以Kylin默认的账号密码 ADMIN/KYLIN 为例,对相应的账号密码进行编码后,结果为Basic QURNSU46S1lMSU4=,那么HTTP对应的头信息 则为Authorization:Basic QURNSU46S1lMSU4=。

查询SQL

curl -X POST -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json'
http://localhost:7070/kylin/api/query -d '{
"sql":"select market,sum(sales) from kylin_sale group by market",
"offset":0,
"limit":10,
"acceptPartial":false,
"project":"my_kylin"
}'

参数解释:

  • sql:必填,字符串类型,请求的SQL。
  • offset:可选,整型,查询默认从第一行返回结果,可以设置该参数以决定返回数据从哪一行开始往后返回。
  • limit:可选,整型,加上limit参数后会从offset开始返回对应的行数, 返回数据行数小于limit的将以实际行数为准。
  • acceptPartial:可选,布尔类型,默认是true,如果为true,那么实际上最多会返回一百万行数据;如果要返回的结果集超过了一百万行,那么 该参数需要设置为false。
  • project:可选,字符串类型,默认为DEFAULT,在实际使用时,如 果对应查询的项目不是DEFAULT,那就需要设置为自己的项目。

Put提交cube

curl -X PUT -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json'
http://localhost:7070/kylin/api/cubes/my_cube/build -d '{
"startTime":0,
"endTime":"$endTime",
"buildType":"BUILD"
}'

上面的内容里面,url里面的my_cube是你自己的cube名,endTime是你需要去指定的,startTime : 当cube中不存在segment时,可以将其设置为0,那么就会从头开始算。做增量时,startTime 要设置为上一次build的
endTime。endTime:时间精确到毫秒(例1388563200000)。

注意点
我们在通过RESTful API向kylin进行build和rebuild的时候一定要观察kylin的web界面下面的Montior进程,否则不小心运行太多进程导致服务器崩掉

JAVA API

JDBC连接方式
和hive、mysql很相似。

package com.shsxt.kylinTest;
import org.apache.kylin.jdbc.Driver;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class KylinJdbc {
    
    public static void main(String[] args) throws IllegalAccessException,
    InstantiationException, ClassNotFoundException, SQLException {
        KylinJdbc kylinJdbc = new KylinJdbc();
        kylinJdbc.connectJdbc();
    }
    
	public void connectJdbc() throws ClassNotFoundException, IllegalAccessException,
        InstantiationException, SQLException {
        Driver driver = (Driver) Class.forName("org.apache.kylin.jdbc.Driver").newInstance();
        Properties properties = new Properties();
        properties.put("user","ADMIN");
        properties.put("password","KYLIN");
        //url后面跟上你的project的名称
        Connection connect = driver.connect("jdbc:kylin://192.168.4.10:7070/my_kylin",
        properties);
        //sql语句和kylin库所含数据一一对应。
        Statement statement = connect.createStatement();
        ResultSet resultSet = statement.executeQuery("select market,sum(sales) from kylin_sale    group by market");
        while(resultSet.next()){
            String market = resultSet.getString(1);
            long sales = resultSet.getLong(2);
            System.out.println(market+" : "+ sales);
        }
	}	
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值