mondrain配置mysql_mondrian 4.7 源码部署(示例代码)

mondrian是一个开源的数据分析工程, 网上有关mondrian3.X的源码部署比较多, 有关4.X的部署较少. 目前官方推荐使用的时mondrian3.7的修订版, 可以再github上下载到最近更新维护的mondrian-master, 下载下来后基本上只需要按部就班的使用maven build一下就可以正常使用了, 如有问题可以根据提示进行一下排查就OK了. mondrian4.7目前是一个beta版, 相关的部署文档较少, 笔者也是痛苦的部署了很多次, 各方请教才部署成功的, 下面就部署的一些坑进行相关记录.

1. 环境配置

ant 1.9.11

maven 3.3.9

git 2.17.0

jdk 1.8.0_91

可以在GitHub上下载mondrian4.7.0.11的源码  https://github.com/pentaho/mondrian/tree/4.7.0.11

建议在 http://sourceforge.net/projects/mondrian/ 上也下载一份相应的源码, 此处的源码是.jar结尾的

2. 源码编译

在github上下载的源码和在源码在编译之前是会缺失一部分java文件的. 因此首先需对工程进行编译.

2.1 ant编译环境

将github上下载的源码解压缩, 解压之后在跟你目录下运行ant, 如下图所示. 由于ant编译过程中需要时使用的git, 因此我们需要安装配置git的环境.

lazy.gif

在file:///C:/Users/Administrator/Downloads/mondrian-4.7.0.11/mondrian-4.7.0.11/doc/developer.html中提供了开发者源码编译步骤. 可以作为参考.

如果编译的过程中出现类似如下错误, 则可以根据提示去对应网址(https://nexus.pentaho.org/content/groups/omni/), 下载相应的jar包, 放在{user}/.subfloor/对应的目录中:

lazy.gif

下载后的目录如下图所示:

lazy.gif 

lazy.gif

ant环境配置好后, 继续执行ant命令, 会出现如下图所示的提示, 则表示ant编译成功, 缺失的类也生成了.

lazy.gif

2.2 maven环境配置

可以将(https://nexus.pentaho.org/content/groups/omni/)配置为maven中央仓库, mondrian大部分以来的jar包都可以在此处找到. 不过笔者该仓库配置没有生效, 不知道是不是应为https的原因. 对于无法自动下载的jar包, 笔者手动下载安装到maven仓库中了. 下载过的jar包如下图所示.

lazy.gif

将jar包手动install到本地仓库的命令如下:

mvn install:install-file -Dfile=C:\Users\Administrator\Downloads\jmxri-1.2.1.jar -DgroupId=com.sun.jmx -DartifactId=jmxri -Dversion=1.2.1 -Dpackaging=jar

其中: Dfile: 指定jar所在路径

DgroupId: 指定jar包对应的groupId

DartiactId: 指定jar包的artifactId

Dversion: 指定jar包的版本信息

Dpackaging: 指定打包的形式, 此处为jar

3 工程导入eclipse

将经过ant编译后的工程导入eclipse中, eclipse一般会制动识别指定的source所在的包, 如果无法识别或者是识别后无法将java文件自动编译成.class文件的话, 则在buildpath中手动添加source或将之前的添加的删除然后手动添加一遍, 并指定编译后class的存放路径.

lazy.gif

lazy.gif

由于ant编译时, 只编译的部分类, 因此在eclipse中可以在run as-->maven bulid.. 中使用install -DskipTests -X命令来编译所有java文件(test除外).

初始导入install后的工程如下图所示, java文件中‘空心J‘表示java文件未编译:

lazy.gif

在build path中将source移除后重新导入, 并制定变异后class的存放地址, 即可自动编译java文件

lazy.gif

mondrian编译打包完成后, 就可以进行相应的测试了

4 mondrian源码测试:

mondrian本身自带demo, 在demo中包含一套完整的测试时所需要的schema和sql建表语句. 测试类如下所示:

package com.rodge;

import java.io.PrintWriter;

import mondrian.olap.Connection;

import mondrian.olap.DriverManager;

import mondrian.olap.Query;

import mondrian.olap.Result;

public class TestMondrian {

public static void main(String[] args) {

String str = "Provider=mondrian;"+

"Jdbc=jdbc:mysql://localhost:3306/foodmart?user=root&password=123456;"+

"Catalog=file:///F:/mondrian/mondrian-4.7.0.11/demo/FoodMart.mondrian.xml;"+

"JdbcDrivers=com.mysql.jdbc.Driver; ";

Connection conn = DriverManager.getConnection(str, null);

// 定义查询语句,遵循mdx语法

String queryStr = "select {[Measures].[Unit Sales]} on columns from Sales";

// 利用connection生成一个Query对象

Query query = conn.parseQuery(queryStr);

@SuppressWarnings("deprecation")

// 执行查询得到结果:

Result result = conn.execute(query);

// 控制台打印结果

PrintWriter pw = new PrintWriter(System.out);

result.print(pw);

pw.flush();

System.out.println("successful!");

}

}

foodmart的数据创建将在后面介绍, 当数据库配置完成后, 运行该测试类, 会出现如下错误:

lazy.gif

这是因为, 在mondrian.resource.MondrianResource中, 找不到MondrianResource.propertis配置文件. 该配置文件可以在mondrian-4.7.0.0-12.jar\mondrian\resource 中获取, mondrian-4.7.0.0-12.jar实在(https://sourceforge.net/projects/mondrian/files/mondrian/mondrian-4.7.0/mondrian-4.7.0.0-12-sources.jar)中下载得到的. 将MondrianResource.propertis配置文件拷贝到eclipse中/mondrian/src/main/java/mondrian/resource/MondrianResource.properties中即可.

lazy.gif

5 测试foodmart数据库的配置

foodmart测试数据库的配置在网上有很多版本, 但是笔者测试后, 发现都需要进行相关改动, 位置, 笔者将数据库配置的步骤进行了整理.

有序mondrian4.7中不包含foodmart的相关信息的配置, 改配置信息需要在mondrian-3.7.0.0-752.zip中寻找, 下载地址为:ttp://sourceforge.net/projects/mondrian/files/mondrian/mondrian-3.7.0/mondrian-3.7.0.0-752.zip

下载下来后, 解压, 在mondrian-3.7.0.0-752.zip\lib目录中, 将jpivot.war拷贝到tomcat/webapps并重命名为mondrian.war, 解压该war包, 并将mysql的链接类拷贝到tomcat/lib中,

lazy.gif

lazy.gif

进入E:\application\apache-tomcat-7.0.65\webapps\mondrian\WEB-INF\lib目录, 执行如下命令, 即可创建foodmark需要的表结构, 当然, 前提是数据中库拥有foodmart这个数据库.

java -cp "E:/application/apache-tomcat-7.0.65/webapps/mondrian/WEB-INF/lib/mondrian.jar;E:/application/apache-tomcat-7.0.65/webapps/mondrian/WEB-INF/lib/log4j-1.2.8.jar;E:/application/apache-tomcat-7.0.65/webapps/mondrian/WEB-INF/lib/commons-logging-1.0.4.jar;E:/application/apache-tomcat-7.0.65/webapps/mondrian/WEB-INF/lib/eigenbase-resgen.jar;E:/application/apache-tomcat-7.0.65/webapps/mondrian/WEB-INF/lib/eigenbase-xom.jar;E:/application/apache-tomcat-7.0.65/webapps/mondrian/WEB-INF/lib/eigenbase-properties.jar;E:/application/apache-tomcat-7.0.65/lib/mysql-connector-java-5.1.31.jar" mondrian.test.loader.MondrianFoodMartLoader -verbose -tables -data -indexes -jdbcDrivers=com.mysql.jdbc.Driver -inputFile="C:/Users/Administrator/Downloads/demo/FoodMartCreateData/FoodMartCreateData.sql" -outputJdbcURL="jdbc:mysql://localhost:3306/foodmart?user=root&password=123456"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云DevOps技术揭秘:新时代运维重器Tencent Hub最佳实践

随着云计算和容器技术的发展以及微服务架构的兴起,服务能够实现细粒度的部署,维护和伸缩。在使开发人员能快速开发的同时,这些技术也给系统和应用的运维带来了更大的挑战。DevOps理念也应运而生,强调研发和运维的流程及工具的自动…

.Net CoreRabbitMQ消息存储可靠机制(下)

前言上篇讨论过消息投递和消息消费过程中如何确保可靠传输,也提及到消息到达RabbitMQ中到被消费前也需要可靠的留存,可因许多的不确定因素会影响着消息的存在与否。消息中转点生产者发送消息到RabbitMQ中,如果交换机根据自身类型和RoutingKey…

nginx安装及负载均衡配置

Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发…

智能停车O2O 独角兽初现:“ETCP停车”获5000万美金A轮融资

日前,国内第一智能停车平台“ETCP停车”宣布完毕A轮融资,由源代码资本、SIG、易车网、经纬中国和商企界知名人士联合投资超过5000万美金。同一时候获悉,ETCP作为中国智能停车行业龙头老大,不仅是该行业的创建者和领军品牌&#xf…

ASP.NET MVC使用Bootstrap系统(2)——使用Bootstrap CSS和HTML元素

阅读目录 Bootstrap 栅格(Grid)系统Bootstrap HTML元素Bootstrap 验证样式ASP.NET MVC创建包含Bootstrap样式编辑模板小结Bootstrap提供了一套丰富CSS设置、HTML元素以及高级的栅格系统来帮助开发人员快速布局网页。所有的CSS样式和HTML元素与移动设备优…

VS2017调试闪退之Chrome

原文:VS2017调试闪退之Chrome巨硬build后发了15.7.1满载期待的升级了。。结果NM泪奔................... 为啥 泪奔? 使用Chrome 调试闪退,MMP ,一想肯定是VS的锅咯,各种抓头发。。 试试看看VS配置发现 ,多了点东西。。 都勾上后&…

ios UISearchBar搜索框的基本使用

摘要: 小巧简洁的原生搜索框,漂亮而易用,如果我们的应用没有特殊需求,都可以使用它。iOS中UISearchBar(搜索框)使用总结 初始化:UISearchBar继承于UIView,我们可以像创建View那样创建searchBar UISearchBar * bar [[U…

Win8下怎样安装Win7 or Win7下怎样安装win8?

预计非常多人可能会用U盘安装工具去去做双系统的安装(Win8下安装Win7, Win7下安装Win8)。可是在安装过程中你 会发现一个问题:win7下安装win8,提示你mbr硬盘格式不能安装win8;win8下安装win7,提…

Linux 练习题-3文件与磁盘 问答

1、描述Liux下软链接和硬链接的区别创建命令不同,ln 命令创建硬链接,ln -s 创建软链接inode节点号不同,硬链接inode与源文件相同,软链接inode与源文件不同使用对象不同,硬链接只能对文件使用,软链接可以对文…

.NET Offer 快到碗里来!.NET 招聘季

关注我们谈到 .NET 在中国的推广和发展,.NET 开发者求职就业及 .NET 企业招人用人的问题往往常被提及。初学者会担心学习 .NET 之后的就业问题,.NET 开发者在求职过程中没有足够多的渠道来获取 .NET 招聘信息,而与此同时,采用 .NE…

java的collections_Java中Collection和Collections的区别

1) 排序(Sort)使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都必须是使用指定比较器可相互比较的1 List list new ArrayList();2 int array[] {112, 111, 23, 456, 231};3 for (int i 0; …

jQuery事件绑定(一)

2019独角兽企业重金招聘Python工程师标准>>> 一、on方法 在Jquery1.7中添加,用来代替其他事件绑定方法。向匹配元素添加一个或多个事件处理程序 使用语法: $(selector).on(event,childselector,data,function) 参数: event&#x…

JDBC学习笔记之JDBC简介

1. 引言 JDBC API是一种Java API,可以访问任何类型的表格数据,特别是存储在关系数据库中的数据。 JDBC可以帮助我们编写下列三种编程活动的java应用程序: 1.连接到数据源,如数据库;2.发送查询和更新语句到数据库;3.检索并处理从数…

PaddleOCR在 windows下的webAPI部署方案

很多小伙伴在使用OCR时都希望能过采用API的方式调用,这样就可以跨端跨平台了。本文将介绍一种基于python的PaddleOCR识方案。喜欢的可以关注公众号,获取更多内容。# 一、 windows环境下部署###1.环境操作系统:windows10;主要软件环…

Vim的NerdTree插件

一个项目文件多起来时,左边的文件树菜单是必要的。参考:常用文件树快捷键所有命令及推荐键盘映射:官方 在vundle插件管理的方式,直接在~/.vimrc中的Plugin段落中加入Plugin "scrooloose/nerdtree"然后重启Vim并输入Plug…

java简单投票系统_JSP实现的简单Web投票程序代码

本文实例讲述了JSP实现的简单Web投票程序。分享给大家供大家参考。具体如下:这里使用文本文件作为数据存储的投票系统。1. vote.java:package vote;import java.io.*;import java.util.*;public class vote {public String filePath "";publi…

HTTP2指纹识别(一种相对不为人知的网络指纹识别方法)

这是关于网络指纹识别的两部分系列的第二部分上一部分我介绍了有关TLS 指纹识别方法(以及在不同客户端的指纹有何区别):https://mp.weixin.qq.com/s/BvotXrFXwYvGWpqHKoj3uQHTTP/2 指纹识别和Tls指纹类似也是一种 Web 服务器可以依赖指纹来识…

中兴智能视觉大数据:人脸识别技术目前处于“用的不够,用的不好”

中兴智能视觉大数据报道:在2018年5月30日举行的“人脸识别等AI技术在校园周边安全中的应用”研讨会上,中国人民大学危机管理研究中心主任唐钧指出,人脸识别等AI技术具有“精细识别”、“提前干预”、“及时处置”等优势,有利于促进…

C#反射,性能优化,不止于优化

“ 架构师的价值,在于独立且理性的思考”想要写出灵活而且具有更好适应性的代码,反射是首选方案。反射赋予程序在运行时动态创建实例的能力,可以在程序运行时(而非编译时)获取实例类型,获取元数据信息&…

设计模式C++实现--Observer模式

2019独角兽企业重金招聘Python工程师标准>>> 观察者模式 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。…