CC00014.kylin——|Hadoop&OLAP_Kylin.V14|——|Kylin.v14|Kylin构建Cube|Segment管理|

本文主要介绍了如何使用JDBC连接操作Kylin,详细阐述了在Hadoop和OLAP环境下,Kylin V14的Cube构建以及Segment管理的过程,包括编程实现和具体代码展示。
摘要由CSDN通过智能技术生成
一、使用JDBC连接操作Kylin
### --- 使用JDBC连接操作Kylin

~~~     要将数据以可视化方式展示出来,需要使用Kylin的JDBC方式连接执行SQL,获取Kylin的执行结果
~~~     使用Kylin的JDBC与JDBC操作MySQL一致
~~~     jdbc url:jdbc:kylin://hadoo02:7070/yanqi_sales_olap       (# yanqi_sales_olap:表示项目名称)
~~~     用户名密码:ADMIN/KYLIN
### --- 需求

~~~     通过JDBC方式,查询按照日期、区域、产品维度统计订单总额/总数量结果
二、编程实现
### --- 创建一个maven项目:SparkBigData
### --- 在pom.xml下导入驱动依赖

        <dependency>
            <groupId>org.apache.kylin</groupId>
            <artifactId>kylin-jdbc</artifactId>
            <version>3.1.1</version>
        </dependency>
### --- 编程实现流程

~~~     创建Connection连接对象
~~~     构建SQL语句
~~~     创建Statement对象,并执行executeQuery
~~~     打印结果
三、编程代码实现
### --- 编程代码实现:写java或者scala程序都可以,跟语言的关系不是很大;使用scala程序:KylinJDBC

package cn.yanqi.kylin

import java.sql.{DriverManager, ResultSet}

object KylinJDBC {
  def main(args: Array[String]): Unit = {
    //1、 创建Connection连接对象
    val url = "jdbc:kylin://hadoop02:7070/yanqi_sales_olap"
    val connection = DriverManager.getConnection(url, "ADMIN", "KYLIN")

    //2、 构建SQL和语句
    val sql =
      """
        |select
        | t1.dt,
        | t2.regionid,
        | t2.regionname,
        | t3.productid,
        | t3.productname,
        | sum(t1.price) as total_money,
        | sum(t1.amount) as total_amount
        |from
        | dw_sales1 t1
        |inner join dim_region t2
        |on t1.regionid = t2.regionid
        |inner join dim_product t3
        |on t1.productid = t3.productid
        |group by
        | t1.dt,
        | t2.regionid,
        | t2.regionname,
        | t3.productid,
        | t3.productname
        |order by
        | t1.dt,
        | t2.regionname,
        | t3.productname
        |""".stripMargin

    // 3、创建Statement对象,并执行executeQuery;获取ResultSet
    val statement = connection.createStatement()
    val resultSet: ResultSet = statement.executeQuery(sql)

    // 4、打印输出结果
    while (resultSet.next()) {
      // 获取时间
      val dt: String = resultSet.getString("dt")
      // 获取区域名称
      val regionname: String = resultSet.getString("regionname")
      // 获取产品名称
      val productname: String = resultSet.getString("productname")
      // 总金额
      val total_money: String = resultSet.getString("total_money")
      // 总数量
      val total_amount: String = resultSet.getString("total_amount")

      //println("dt   regionname   productname   total_money   total_amount   ")
      println(f"$dt   $regionname   $productname%-10s   $total_money%10s    $total_amount%10s")
    }

    connection.close
  }
}
### --- 编译打印

~~~     # 输出参数
D:\JAVA\jdk1.8.0_231\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=62473:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath D:\JAVA\jdk1.8.0_231\jre\lib\charsets.jar;D:\JAVA\jdk1.8.0_231\jre\lib\deploy.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\access-bridge-64.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\cldrdata.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\dnsns.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\jaccess.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\jfxrt.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\localedata.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\nashorn.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\sunec.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\sunjce_provider.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\sunmscapi.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\sunpkcs11.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\zipfs.jar;D:\JAVA\jdk1.8.0_231\jre\lib\javaws.jar;D:\JAVA\jdk1.8.0_231\jre\lib\jce.jar;D:\JAVA\jdk1.8.0_231\jre\lib\jfr.jar;D:\JAVA\jdk1.8.0_231\jre\lib\jfxswt.jar;D:\JAVA\jdk1.8.0_231\jre\lib\jsse.jar;D:\JAVA\jdk1.8.0_231\jre\lib\management-agent.jar;D:\JAVA\jdk1.8.0_231\jre\lib\plugin.jar;D:\JAVA\jdk1.8.0_231\jre\lib\resources.jar;D:\JAVA\jdk1.8.0_231\jre\lib\rt.jar;E:\NO.Z.80000.Hadoop.project\SparkBigData\target\classes;C:\Users\Administrator\.m2\repository\org\scala-lang\scala-library\2.12.10\scala-library-2.12.10.jar;C:\Users\Administrator\.m2\repository\org\apache\spark\spark-core_2.12\2.4.5\spark-core_2.12-2.4.5.jar;C:\Users\Administrator\.m2\repository\com\thoughtworks\paranamer\paranamer\2.8\paranamer-2.8.jar;C:\Users\Administrator\.m2\repository\org\apache\avro\avro\1.8.2\avro-1.8.2.jar;C:\Users\Administrator\.m2\repository\org\codehaus\jackson\jackson-core-asl\1.9.13\jackson-core-asl-1.9.13.jar;C:\Users\Administrator\.m2\repository\org\apache\commons\commons-compress\1.8.1\commons-compress-1.8.1.jar;C:\Users\Administrator\.m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值