时间:2015-05-06 来源:

Hive作为Mondrian的数据源 【移动开发】

      项目中的报表系统使用开源的mondrian和saiku作为工具实现的div+css+js切图,现在自己又不得不去熟悉OLAP这一块的东西,div+css+js切图首先要面对的就是mondrian这一座大山页面div重构,听他们之前的开发人员介绍说mondrian里面会有很多坑,页面div重构尤其是性能问题psd切图html,在之前自己的测试过程中自己也遇到了一些问题,手机div+css但是当时没怎么记录过了一两个月就差不多忘记怎么解决的了.
      不过当时对于mondrian的慢还是深有体会的web外包,至于他是怎么实现的我也没有看过源代码,web外包只是通过查看执行结果发现的网页切图制作,我使用的数据源是官方提供的foodmart数据库,div页面在之前的文章中介绍了如何生成这些数据和如何将这些数据导入到hive中div+css+js切图,然后我在自己的测试集群上搭了伪分布式的集群,div+css+js切图使用mondrian分别将mysql和hive作为数据源进行测试承接网站前端,一个MDX查询mysql可以几秒钟查到的结果,承接网站前端在hive中整整跑了半个小时psd切图html,当时观察着hive的history记录发现每一个sql都会跑一个甚至多个mapreduce任务,承接网页制作至于原因嘛web外包,我觉得首先mondrian生成的sql就是比较多的,web外包我记录mysql的查询记录发现一个MDX查询会生成大概18条SQL查询网页切图制作,其中不乏group by和join之类的查询,网页切图制作因为mondrian没有对底层数据源进行优化(我认为),所以这些冗长的SQL拖慢了整个查询的速度;其次hive不是mysql那样的面向TPS的数据库承接网站前端,它是面向吞吐量的,承接网站前端所以每一个SQL查询的响应时间是很久的psd切图html,通过观察发现生成的这些SQL是顺序执行的,手机div+css为什么不慢呢!
      虽然慢web外包,但是先实功能再说其他的吧,div切图排版之前测试hive的过程中记得自己对hive的jdbc源码进行了修改网页切图制作,主要是修改了一些hive在实现jdbc中没有实现但是抛出异常的接口,网页切图制作而mondrian会调用这些接口导致下面的流程走不下去了div+css+js切图,整体的修改应该说还是比较简单的.另外一个问题是当时的hive是没有使用任何认证机制的,div+css+js切图包括hadoop也是没有认证机制的承接网站前端,现在在公司的hadoop集群上跑需要使用kerberos认证,页面div重构这一块自己还不熟悉psd切图html,还只是知道怎么用,手机div+css所以还需要恶补了一下关于kerberos认证的知识.

      之前的准备工作已经做好了web外包,首先我已经测试了使用mysq作为数据源使用mondrian作为MDX查询引擎的流程、然后记录了如果生成mondrian的foodmart数据以及如何将数据到导入到hive中,web外包另外网页切图制作,然后使用jdbc连接这个server.万事俱备div+css+js切图,只欠东风了.
      首先既然hiveserver是用了kerberos认证的,div+css+js切图其实它是一个代理服务器承接网站前端,使用代理用户hive代理其他用户提交mapreduce任务和执行HDFS操作,承接网站前端所以在代码中首先需要使用kerberos认证psd切图html, true); conf.set( "hadoop.security.authentication" , "C:\\Users\\Administrator\\Desktop\\intern.keytab" ); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
    初始化了kerberos之后网页切图制作,接下来需要指定hive的jdbc驱动器,网页切图制作在使用mysql的时候貌似没有指定div+css+js切图,所以需要在代码的开始指定hive数据源
           try {
             Class. forName("org.apache.hive.jdbc.HiveDriver");
           } catch (ClassNotFoundException e) {
             e.printStackTrace();
           }

然后再将连接mysql时指定的olap4j的url,替换之后的url如下:
       Connection connection = DriverManager. getConnection("Provider=mondrian;" +
               "Jdbc=jdbc:hive2://bitest0.server.163.org:10000/foodmart;principal=hive/app-20.photo.163.org@HADOOP.HZ.NETEASE.COM;" +
               "Catalog=http://db-53.photo.163.org:16161/cube/queryxml/60548;"
               + "DynamicSchemaProcessor=mondrian.i18n.NrptLocalizingDynamicSchemaProcessor;"
               + "Locale=zh_CN",
              null);

    建立好了连接,手机div+css接下来就可以执行一条mdx查询web外包,需要注意的是这里的Catalog是一个url而不是文件了,div切图排版因为这个url是我们项目中提供下载cube定义的xml文件网页切图制作,因此也可以看到在Catalog参数中只需要指定能够获取xml文件的地址就可以了,网页切图制作无论是一个url还是本地文件路径.接着执行如下的MDX查询:
       Query query = connection.parseQuery( "SELECT NON EMPTY {Hierarchize({[时间].[年份].Members})} ON COLUMNS, "
                     + " NON EMPTY {[Measures].[销售总额]} ON ROWS FROM [TestFoodMart]");
       Result result = connection. execute(query);
       PrintWriter pw = new PrintWriter(System.out);
       result.print(pw);
       pw.flush();

这样应该就可以了,div+css+js切图但是还是出现了这样的错误:
Caused by: org.apache.thrift.transport.TTransportException: Peer indicated failure: Unsupported mechanism type PLAIN
       at org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:190)
       at org.apache.thrift.transport.TSaslTransport.open( TSaslTransport.java:288)
       at org.apache.thrift.transport.TSaslClientTransport.open(TSaslClientTransport.java:37)
       at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:203)
       ... 20 more

    这是提示我使用的验证方式不对承接网站前端,因为服务端使用的是kerberos认证而客户端没有,页面div重构但是我分明已经在url里面里面加上了principal这个参数了啊psd切图html,尝试了一下直接连接hive但是jdbc的url不加principal这个参数,手机div+css果然出现了相同的错误web外包,这也就是说这个principal没有生效,web外包为什么呢?
通过观察olap4j的url发现它正好是使用";"分割的网页切图制作,而principal和前面的hiveserver的服务器端口号之间也使用的是";"分割,div页面查看了hiveserver2的文档发现原来在使用kerberos认证的时候必须使用这种方式的url(host:port;principal=xxx),这就有点纠结了,div+css+js切图mondrian里面把";"当成了分隔符承接网站前端,就会只把前面的host:ip作为jdbc的url了,承接网站前端当然连接出现错误了啊.
也尝试过使用properties参数创建连接psd切图html,但是尝试都失败了,承接网页制作因为hive的url必须将principal和host:port用";"分割web外包,之后只有查看一下源代码如何对mondrian的url进行分割的,web外包创建连接是在mondrian.olap.DriverManager类的静态函数getConnection完成的网页切图制作, 47 CatalogLocator locator) 48 { 49 Util.PropertyList properties = Util.parseConnectString(connectString); 50 return getConnection(properties, locator); 51 } 2729 public static PropertyList More ...parseConnectString(String s) { 2730 return new ConnectStringParser(s).parse(); 2731 }

    在Util.parseConnectString函数中对url进行划分,网页重构报价划分之后的结果使用key:value的形式保存在一个List<Pair>中承接网站前端,second为value,可想而知在解析的时候是根据"="作为key和value的分割符,手机div+css使用";"作为一个key:value对直接的分隔符.
    在ConnectStringParser类中有如下几个函数:parsePair(解析一个key:value对web外包,在因为这个url是作为jdbc这个key的value, at position " + i 2844 + " in '" + s + "'"); 2845 } 2846 }
    这里是当遇到"\""和"\'"这两个字符的时候需要特殊处理div+css+js切图,那样在Jdbc的参数中使用一个引号就能够解决分隔符的问题了承接网站前端,这里也给我一个提示,页面div重构在字符串分隔符的时候一定要加上将引号括起来作为一个完整的字符的功能psd切图html,否则可能会影响到使用(如果没有对引号的特殊处理,手机div+csshive这个问题将很难解决).
修改之后的url如下:
       Connection connection = DriverManager. getConnection( "Provider=mondrian;" +
               "Jdbc=\"jdbc:hive2://bitest0.server.163.org:10000/foodmart;principal=hive/app-20.photo.163.org@HADOOP.HZ.NETEASE.COM\";" +
               "Catalog=http://db-53.photo.163.org:16161/cube/queryxml/60548;"
               + "DynamicSchemaProcessor=mondrian.i18n.NrptLocalizingDynamicSchemaProcessor;"
               + "Locale=zh_CN" ,
              null );

再次尝试一下,web外包之前的错误不再出现了网页切图制作,但是出现了另外的一个错误:
Caused by: java.sql.SQLException: Method not supported
       at org.apache.hive.jdbc.HiveDatabaseMetaData.isReadOnly(HiveDatabaseMetaData.java:770)
       at org.apache.commons.dbcp.DelegatingDatabaseMetaData.isReadOnly(DelegatingDatabaseMetaData.java:679)
       at mondrian.spi.impl.JdbcDialectImpl.deduceReadOnly(JdbcDialectImpl.java:196)
       ... 19 more

    这里说明在hive的jdbc实现中不支持isReadOnly函数,div页面但是抛出了异常div+css+js切图,而在mondrian创建连接的时候会调用这个函数,div+css+js切图但是没有捕获这个异常承接网站前端,因此就终止了,承接网站前端所以需要修改一下hive的jdbc的源代码psd切图html,将这个抛异常的语句给注释了.
下载了hive源码,承接网页制作然后只需要编译一下jdbc部分的代码web外包,完成之后修改src/java/org/apache/hive/jdbc/HiveDatabaseMetaData.java文件中的isReadOnly函数,web外包原来是抛出异常网页切图制作,修改为return false.接着再次运行就能够执行MDX查询了.

经过这次配置和测试终于能够尝试使用hive作为mondrian的数据源了,网页切图制作所以功能上是可以实现的div+css+js切图,接下来要对我们项目中的数据源进行添加,网页重构报价后期主要的工作应该还是放在数据源对于MDX查询的优化承接网站前端,例如预先计算、加缓存等.

在这次尝试使用mondrian连接hive数据库的时候遇到了三个问题:
1、hiveServer2的配置和kerberos认证问题,承接网站前端这个让我不得不了解一下kerberos的原理.
2、通过jdbc直接连接hiveserver2完成之后psd切图html,使用相同的jdbc连接mondrian就出现问题,手机div+css使用相同的分隔符的问题也阻碍也一段时间web外包,最后通过查看源代码才解决这个问题,div切图排版另外在遇到使用分隔符的时候一定要加上可以使用引号括起来组成完整一段的方式.
3、jdbc源代码需要修改网页切图制作,这个还算是比较轻松,网页切图制作只需要找到问题所在div+css+js切图,替换jar包就可以了.

至于性能问题,div+css+js切图我使用了相同的MDX查询语句“SELECT NON EMPTY {Hierarchize({[时间].[年份].Members})} ON COLUMNS, NON EMPTY {[Measures].[销售总额]} ON ROWS FROM [TestFoodMart]”对mysql和hive使用相同的数据集进行测试,手机div+css得到的结果是相同的:
Axis #0:
{}
Axis #1:
{[时间].[1998]}
Axis #2:
{[Measures].[销售总额]}
Row #0: 1,147
但是mysql使用的时间是300ms左右网页切图制作,hive使用的时间为150000ms左右,div页面差不多500倍的差距.

准备工作:



点击次数:8496
作者:
web前端行业资讯
Web new NewsList
谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日继“Angel”开源后,腾讯又开放TDinsight机器学习平台 ,,2017年12月21日谷歌母公司研发“闪光”网络技术无需铺设线缆 ,,2017年12月21日微软投资5千万美元利用人工智能对抗气候变化 ,,2017年12月21日谷歌中国2017:面向开发者的1年AI先行的1年 ,,2017年12月21日GreenKey加入Symphony软件基金会,将开源语音软件 ,,2017年12月21日腾讯发现者揭秘:怎么应对TensorFlow的安全风险,修复有多难 ,,2017年12月21日清华新成立两大交叉研究机构探索智能与未来 ,,2017年12月21日微软将AI融入生产力工具和搜索引擎与其它巨头竞争 ,,2017年12月21日Gfycat将利用机器学习技术创建高分辨率GIF动图 ,,2017年12月21日安全软件公司Avast开源化机器码反编译器RetDec ,,2017年12月21日谷歌开源TFGAN,让训练和评估GAN变得更加简单 ,,2017年12月21日社区对模块化不感兴趣时隔三周经典版FedoraServer27发布 ,,2017年12月21日Windows10加入OpenSSH客户端 ,,2017年12月21日FirefoxQuantum发布一个月安装量1.7亿 ,,2017年12月21日吴恩达宣布创业新项目已与富士康达成战略合作 ,,2017年12月21日Scala入门系列(十二):隐式转换2017年12月20日speedment入门教程2017年12月20日SLAM入门笔记(1):特征点的匹配2017年12月20日深入浅出了解frame和bounds2017年12月20日【您还有心跳吗?超时机制分析】 【编程语言】2015年05月11日【LeetCode77】 Combinations 【编程语言】2015年03月30日C++构造函数和析构函数 【编程语言】2015年04月01日anadroid环境搭建 【研发管理】2015年06月17日hdu5375-Graycode(dp)解题报告【互联网】2015年08月15日【程序员内心真正的需求到底是什么?】【编程语言】2015年04月24日【学习笔记】信息系统项目管理-项目管理办公室 【编程语言】2015年01月07日超过了脚本运行的最长时间..Server.ScriptTimeOut属性指定新值2014年01月29日debaininstallscim2015年06月30日HDU1074DoingHomework(状态压缩+DP) 【编程语言】2015年03月16日DynamicsCRM2013更新用户数据主要电子邮件字段报数据加密错误 【互联网】2014年11月10日雅虎另四名董事继杨致远之后将离职 ,,2016年07月24日在VirtualBox上面安装Ubuntu14.04遇到的问题及对策 【Web前端】2015年08月25日搜索引擎不收录网站页面的常见原因解析2014年01月29日dubbo+spring+zookeeper之demo制作 【综合】2015年05月06日hbase源码解析之master篇1 【互联网】2015年06月02日【FJOI2007】【BZOJ1002】轮状病毒 【云计算】2015年06月11日ASP.NET之Response.Cookies.Remove无法删除COOKIE的原因2014年01月29日FCSAN-光纤通道存储区域网络【研发管理】2015年01月20日EM算法-未完 【Web前端】2015年05月15日重装系统需遵守的20条军规2014年01月29日MyBatis之高级关联和集合映射(二、嵌套结果综合案例) 【研发管理】2015年07月24日iOS:编译错误Avalidprovisioningprofileforthisexecutablewasnotfound. 【移动开发】2015年02月11日Java程序员的Golang入门指南(上) 【云计算】2015年06月24日加密算法罗列总结对比【移动开发】2015年06月17日javascript表单规则集合对象2014年01月29日AutoMapper——Map之实体的桥梁(二) 【Web前端】2015年03月10日linuxmint安装搜狗输入法 【研发管理】2015年07月21日myeclipseAndroid项目无法attach源码 【系统运维】2015年04月24日轻松python文本专题-去掉字符串前后空格 【移动开发】2015年08月25日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)