Gnuplot图形展示hadoop处理结果
2014-11-11 10:37
225 查看
一直苦恼于如何将hadoop处理的结果进行显示,有一些商业图形软件和大数据可以很好的集成如Intellicus,功能很完善图形显示也很漂亮但是目前阶段过于繁琐,而且还是收费的。还有一种是Eclipse的BIRT插件,这个工具比较好用,比较适合正式的项目开发应用。后来偶尔发现一个很好用的小工具Gnuplot,可以在window, linux各种平台上运行的,主要是应用在数学计算中的的画各种函数曲线,于是乎就打算用它作为目前的数据展示。
Gnuplot 是一种免费分发的绘图工具,可以移植到各种主流平台。它可以下列两种模式之一进行操作:当需要调整和修饰图表使其正常显示时,通过在 gnuplot 提示符中发出命令,可以在交互模式下操作该工具。或者,gnuplot 可以从文件中读取命令,以批处理模式生成图表。例如,如果您正在运行一系列的实验,需要每次运行后都查看结果图表;或者当您在图表最初生成很久以后需要返回图表修改某些内容时,批处理模式能力会特别有用。当在 WYSIWIG 编辑器中很难捕获用于修饰图表的鼠标单击事件时,您可以很容易地将 gnuplot 命令保存在文件中,六个月后将其加载到交互式会话中重新执行。安装:http://www.gnuplot.info/download.html
运行实例:之前有运行过MapReduce的job求1993年到2013年之间每年的平均温度,最高温度和最低温度。在3个节点上处理1.2G的数据量总时间是6分钟。本实例没必要用那么都的数据,于是选择2012年的部分气象数据92MB,求每个月的平均温度,最高温度和最低温度。这里贴上Reduce的代码,其他的Map和Driver类和之前的基本差不多。
参考资料:http://www.gnuplot.info/ (Gnuplot官网)http://www.ibm.com/developerworks/cn/linux/l-gnuplot/ (IBM developer works关于gnuplot的一篇)
Gnuplot 是一种免费分发的绘图工具,可以移植到各种主流平台。它可以下列两种模式之一进行操作:当需要调整和修饰图表使其正常显示时,通过在 gnuplot 提示符中发出命令,可以在交互模式下操作该工具。或者,gnuplot 可以从文件中读取命令,以批处理模式生成图表。例如,如果您正在运行一系列的实验,需要每次运行后都查看结果图表;或者当您在图表最初生成很久以后需要返回图表修改某些内容时,批处理模式能力会特别有用。当在 WYSIWIG 编辑器中很难捕获用于修饰图表的鼠标单击事件时,您可以很容易地将 gnuplot 命令保存在文件中,六个月后将其加载到交互式会话中重新执行。安装:http://www.gnuplot.info/download.html
运行实例:之前有运行过MapReduce的job求1993年到2013年之间每年的平均温度,最高温度和最低温度。在3个节点上处理1.2G的数据量总时间是6分钟。本实例没必要用那么都的数据,于是选择2012年的部分气象数据92MB,求每个月的平均温度,最高温度和最低温度。这里贴上Reduce的代码,其他的Map和Driver类和之前的基本差不多。
@Override public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException{ long totalNum = 0; long totalValue = 0; long maxTemp = Long.MIN_VALUE; long minTemp = Long.MAX_VALUE; long avgTemp = 0; for(IntWritable value: values){ long temperature = value.get(); totalNum ++; totalValue += temperature; if(temperature > maxTemp){ maxTemp = temperature; } if(temperature < minTemp){ minTemp = temperature; } } avgTemp = totalValue/totalNum; double avg = (double)avgTemp/(double)10; double max = (double)maxTemp/(double)10; double min = (double)minTemp/(double)10; context.write(key, new Text(String.valueOf(avg) + "\t" + String.valueOf(max) + "\t" + String.valueOf(min))); }2012年的平均温度,最高温度,最低温度:
201201 -0.2 24.7 -21.0 201202 -0.9 26.1 -34.0 201203 5.6 30.3 -18.0 201204 5.9 32.0 -19.0 201205 11.4 35.6 -5.0 201206 14.3 39.4 -2.3 201207 17.3 40.0 0.0 201208 15.8 36.7 -18.3 201209 12.0 35.0 -18.0 201210 6.8 30.0 -14.0 201211 4.6 30.0 -11.0 201212 -1.6 26.0 -29.2输入Gnuplot 脚本来画出2012年每个月份的平均温度,最高温度,和最低温度三条曲线图
gnuplot> set xlabel "Month"gnuplot> set ylabel "Temperature"gnuplot> set title "Year(2012) Monthly Temperature"gnuplot> set xrange[201201:201212]gnuplot> set xtics 201201,1,201212gnuplot> plot "temperature.dat" using 1:2 w lp pt 5 title "Avg Temperature", "temperature.dat" using 1:3 w lp pt 6 title "Max Temperature", "temperature.dat" using 1:4 w lp pt 7 title "Min Temperature"画出来的图形曲线如下:
参考资料:http://www.gnuplot.info/ (Gnuplot官网)http://www.ibm.com/developerworks/cn/linux/l-gnuplot/ (IBM developer works关于gnuplot的一篇)
相关文章推荐
- 图文并茂展示hadoop 中wordcount的 输入,map处理,排序,分区,分组,combine,copy,再排序,分组,redece处理
- Hive数据分析——Spark是一种基于rdd(弹性数据集)的内存分布式并行处理框架,比于Hadoop将大量的中间结果写入HDFS,Spark避免了中间结果的持久化
- Giraph:基于Hadoop的开源图形处理平台
- spring mvc框架整个执行过程,从输入http url,到action映射,再到action处理,返回jsp文件,解析jsp文件,然后渲染, 到返回给浏览器展示结果
- 传递一个查询并处理结果
- VB.NET数据库编程中的图形处理
- 为什么选择微软的MSchart做数据仓库的图形展示?
- 最近在做的图形图像处理项目,使用GDI+(贴图)
- [导入]在SYBASE数据库中使用游标(Cursors)将多行查询结果进行逐行处理
- 在VB中用Paintpicture方法进行图形处理
- 用log4j模仿数据库查看处理结果
- 对 Len() 函数所得结果不准确的处理
- Delphi 图形处理 技巧
- 使用游标(Cursors)将多行查询结果逐行处理
- 图形图像处理-之-高质量的快速的图像缩放 上篇 近邻取样插值和其速度优化
- 网页加速系列(一)、 网页加速之图形处理篇
- 推荐一个.Net做的图形处理软件--Paint.NET
- java在linux下不能处理图形的解决办法
- Java在AIX的unix环境下不能处理图形的解决办法
- WinCE 4.2(.net精简框架集)下的图形双缓存处理