APP下载

基于Hadoop的商业数据可视化分析模型的研究

2016-06-06胡琴琴

电脑知识与技术 2016年6期
关键词:数据可视化分析模型电子商务

胡琴琴

摘要:信息科技时代,电子商务给人类生活带来极大便利的同时也产生了大量的商业数据,如何存储和管理这些数据,挖掘其潜在价值已成为各大电商研究的重要方向;随着数据量的爆炸性增长,传统的关系型数据库系统已无法满足大规模数据的分析和可视化任务,该文在研究了HDFS的分布式文件存储以及MapReduce的并行化计算的基础上,提出了基于Hadoop平台构建商业数据可视化分析模型的系统方案。通过搭建Hadoop平台,建立Hive数据库,构造分析模型,可视化分析结果展示,研究了Hadoop云平台的搭建过程,实现了Hadoop环境下基于Hive数据库的离线数据分析和数据可视化。

关键词:数据可视化;电子商务;Hadoop;Hive;分析模型

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)06-0003-04

1 概述

当今信息时代,形式各异的信息载体如移动智能设备、电子商务网站等,几乎每时每刻都在产生并传递大量商业数据,数据的背后隐藏着信息,而信息之中蕴含着知识和智慧,及时地发现这些知识并将其应用于现实的生产环境中可以为人们正确分析形势和作出决策提供依据。数据可视化是从大型数据集中以某种概要形式抽提信息,并将其以图形图像的形式表达呈现,是数据的一种视觉表现形式。在商业智能中,决策者通常需要根据历史数据总结出经验教训,以便在未来竞争中处于有利地位。但是人工地从纷繁复杂的数据中抽取关键信息是一件费力费时的工作,相对于从一堆数据中去抽取和抽象出具体信息而言,人类更善于处理图形化的信息,通常能够一眼洞悉图片中所传达的信息,因此数据可视化技术是商业数据分析的不可或缺的一部分。

目前,国内已有传统电子商务系统的建设大多采用价格昂贵的大型服务器,数据库采用关系型数据库系统,随着云计算的发展和互联网+时代的到来,数据呈爆炸式增长,传统的单台主机在计算与存储方面也越来越不能满足数据分析处理的需求[4]。由此产生了Hadoop平台技术,该平台技术包括两大核心设计:分布式文件系统HDFS(Hadoop Distributed File System)和并行计算框架MapReduce。HDFS设计部署在廉价的硬件上,成本低且具有高容错性,为海量数据提供存储,MapReduce为海量数据提供并行计算。作为一个开源大数据处理平台,在业界已得到广泛的研究与应用,各大知名企业也大都在各自核心领域运用了此技术。国外著名社交网站Facebook运用Hadoop技术构建了整个网站的数据仓库,国内腾讯、百度和阿里巴巴等互联网知名企业也都采用了Hadoop技术用于海量数据处理分析。可见,研究并使用Hadoop技术解决商业数据的可视化,具有十分重要的意义,本文提出了一种基于Hadoop平台实现商业数据可视化的解决方案并论证其可行性。

2 相关研究

2.1 Hadoop相关技术

Hadoop有狭义和广义之分,狭义的Hadoop通常是指HadoopCore,其包括最底层的分布式文件系统HDFS和并行运算框架MapReduce引擎。广义的Hadoop 通常泛指Hadoop生态系统(HadoopEcosystem),其范畴更广,除了Hadoop本身(HDFS+MapReduce),还包含HBase、Hive、Pig、Sqoop、Mahout和Zookeeper等其他开源工具。

1)HDFS框架

HDFS[1]存储Hadoop集群中所有存储节点上的文件,主要包含两个功能组件NameNode和DataNode。NameNode管理文件系统的命名空间,存储文件的元数据信息,并维护文件系统树。DataNode存储文件的数据块信息,定期向NameNode发送其所存储的块列表信息。

2)MapReduce框架

MapReduce[1]是Hadoop下的分布式数据处理模型,主要由JobTracker和TaskTracker组成。Hadoop将作业分成若干个map任务和reduce任务来执行,JobTracker是任务调度器,通过调度TaskTracker上运行的map或reduce任务,来协调系统作业。TaskTracker是任务跟踪器,向JobTracker报告其任务执行情况。

3)Hive数据仓库

Hive是基于Hadoop的一个分布式数据仓库工具,其数据存储在HDFS上,可以将结构化数据文件映射成一张数据库表,并提供基于SQL的查询语言(由运行时自动翻译成MapReduce作业)用以查询数据。

4)HBase数据库

HBase是一个分布式的、面向列的非关系型数据库,通过Hadoop文件系统API来持久化存储数据,所有数据都存储在HDFS上,支持MapReduce的批量式计算和海量数据的实时随机查询。

2.2 数据可视化技术

当前主流的数据可视化形式有云图、平行坐标图、矩阵图、直角坐标图、散点图等[5]。每种可视化方式都不是完美的,选择恰当的可视化方法,集中展现数据的某个角度,帮助我们分析洞察数据,转换为决策才是最重要的。

可视化图形由主区、图元、图例、图文说明等基本要素组成[8],其中主区是用于绘制可视化图形的区域画板,通常是一个长度和宽度确定的矩形,用于确定在屏幕的具体区域绘制可视化图形。不同类型的可视化形式在可视化基本要素的组织方式和内容上有所不同,例如条形图和地图,条形图以直角坐标系为基准,通常以纵轴条形的长度表示各类别的度量值,以横轴条形的宽度(通常是等长)表示类别,而地图以地理地图为基准,通过色彩比重来显示各个行政分区的度量值。这表明我们在进行可视化的时候需要对数据进行不同的组织变换,而通常同主题的可视化的展现形式基本相同,例如用条形图展示不同类别的商品的销售额、销售量等,这就意味着可以将条形图的一些基本要素抽象出来,以数值的形式组合起来构成一个可视化分析模型,每次重用此模型即可而不用每次可视化都进行一次数据重组。本文研究的是如何将同一类型的可视化组织起来形成一个主题模型,针对于这个主题的可视化,都可以通过此模型方便地构建可视化形式。

3 基于Hadoop的商业数据可视化分析模型

本研究以Hadoop云计算平台为基础,提出了基于Hadoop平台构建商业数据可视化分析模型的方案,技术方案如图1所示。原始业务数据存储在关系型数据库中,首先需要将数据从关系型数据库集成到Hadoop的HDFS存储上,然后建立Hive数据库,将数据加载进Hive中,通过HiveQL语句对数据进行查询分析,将查询的结果存入HBase数据库中,将相应的查询结果与已有的可视化参考模型结合,构造可视化分析模型,将模型以固定形式存储在HBase中,然后通过highChart、echarts等可视化插件对分析模型进行图形可视化。

3.1 数据集成

首先从原始企业数据库中抽取出需要的业务数据存入到Hadoop的HDFS文件系统中,具体分为两个阶段,第一阶段初始数据全量导入,第二阶段数据增量导入。实验中采用Sqoop技术实现数据导入,Sqoop是Hadoop生态系统的一员,主要用于Hadoop与关系型数据库的数据传递,可以通过Hadoop的MapReduce将关系型数据库的数据导入到Hadoop的HDFS中,也可以将HDFS中的数据导入到关系型数据库中[2]。具体的使用如图2所示

图2中已标注的是服务器的路由信息,未标注的参数--table是指定数据表名称,--columns指定导入指定表的哪些字段,--target-dir是指定数据的HDFS文件存储路径。

在进行第一阶段的全量导入时,一次性导入所需的所有数据,由于商业数据每日数据都有更新,所以需要第二阶段的增量导入。考虑到HDFS不支持随机修改和删除数据,只能在文件末尾追加,需要分情况处理待更新数据,本文中将数据划为两类,一类是一些用于表示实体属性或状态的数据,如商品类别表、公司表等,此类数据具有数据量小,更新频率低的特点,但有修改删除等操作。一类是基础业务数据,如订单表和订单详情表等,此类数据新增频繁,但无修改删除操作。第一类数据的更新策略,先删除HDFS上的此类数据,然后通过图2中的Sqoop import命令导入此类数据经过修改后的数据。第二类数据的更新策略是直接使用Sqoop import --append命令导入新增部分的数据,如图3所示,图中标注的--append表追加,不可省略,标注的where是SQL查询语句中的条件查询。数据需每日更新,实验中采用linux系统自带的定时任务crontab每日定时执行数据导入程序。

3.2 数据转换存储

数据通过Sqoop完成数据导入以后,为了保证数据的质量和可用性,需要对数据进行格式转换存储。在实际操作中,通常会进行两种转换,字段组合和字段拆分。

字段组合:各个企业数据之间是相互独立的,集中到同一平台时可能会有关键数据冲突问题,解决策略通过建立临时的Hive表,将数据加载到临时表中,再通过HiveQL(Hive Query Language)语句重组关键字段,保证其唯一性和正确性。

字段拆分:业务数据中的时间属性是一个完整的时间信息,为了提高查询效率,通常将数据的时间字段拆分成单独的年月日,使数据在Hive中按照时间分区存储。解决策略是通过建立临时的Hive表和最终的分区表,将数据加载到临时表中,再通过HiveQL语句拆分数据的时间字段并插入到分区表中。其中建立分区表使用的命令见图4,数据分区存储使用的命令如图5所示:

3.3 数据分析与模型建立

数据进入Hive数据库以后,结合实际业务需求,设计可视化分析主题,通过HiveQL语句对数据进行分析,从Hive数据库中查询相关的数据,记录查询结果,然后构建可视化分析模型,将模型结果存入Hbase数据库中。可视化主题分析就是在分析商业数据类型、存储结构的基础上对具有可视化意义的主题概念进行提炼和取舍的过程。

数据可视化在响应的速度方面具有很高的要求,本文研究采用Hbase存储HiveQL查询结果和可视化分析模型。Hbase是一个列式数据库,仅支持行键检索数据,所以对行键的设计至关重要。

本文对行键的设计采用两类设计标准,如图6所示,第一类采用“分析主题+生成时间”的形式,分析主题是每类HiveQL查询设计的类别名,用于区分统计分析结果;生成时间采用“yyyyMMdd”的形式,用于标识统计分析结果的生成时间。其对应一个列族,但有多个列,且列数不固定,列中主要是用于存放成员属性集和分析模型。成员属性是每类查询结果中能够唯一标识一条查询记录的属性值。分析模型是该类查询结果集针对于某种可视化形式的数据存储模型。分析模型的建立是以现有可视化图形为依据,抽象出其图形化属性,将其数值化,然后以json字符串的形式存入HBase中。例如图7中针对于地域维度的销售分析,将areaSale设置为分析主题类别名,第一行采用的是第一类行键设计,content是列族名称,allproperty列存储的是成员属性值集合,salepie列存储的是针对于销售额分析的饼图模型。

第二类行键设计采用“分析主题+成员属性+生成时间”的形式,其与第一类拥有相同的列族,但不同列,每列存储查询结果的属性值。例如图中salequatity列表示销售量,sale表示销售额,buyerquatity表示买家数量,sellerquatity表示买家数量。

4 实验方案

4.1 Hadoop集群配置

本研究利用实验室提供的计算机网络中心搭建Hadoop云计算平台,具体的参数如下:

Hadoop集群:1个Master节点,3个slave节点

硬件配置:4G内存,100G硬盘

系统版本:Centos 6.4

软件版本:Hadoop-1.2.1,HBase-0.98.12,Hive-1.1.0,Zookeeper-3.4.6,Sqoop-1.4.6

4.2 实验验证

1)数据来源

本文以电子商务领域中的具体应用(面向小微企业的进销存管理平台)为实例来验证本文提出的可视化分析模型。平台系统的系统架构如图8所示,此系统采用分布式数据库,由一台路由服务器和若干台数据库服务器组成,企业需要通过路由服务器查找到其数据所在的数据库服务器才能进行访问。数据库采用oracle,每台数据库服务器对应一个数据库实例,每个数据库示例对应多个表空间。目前平台中企业可分为独立企业和连锁企业两种,独立企业拥有独立的表空间,连锁企业共同拥有独立表空间。整个平台最多拥有个企业,每个企业每日最多生成[103]个订单,即整个平台每日最多生成[109]条订单记录。目前一个企业有70余张数据表,随着业务的增加,数据表的数量也可能增加。本文研究的可视化模型是基于平台所有企业的相关业务数据建立,由于采用的是分布式系统,数据分散在不同的数据库服务器上,首先需要进行数据集成,把分散的企业数据从分布式数据库系统集成到Hadoop平台,然后对整体数据进行可视化分析建模。

2)实验分析

本文在存储数据分析的结果和数据可视化模型时采用的是HBase数据库,由于数据可视化在响应速度方面具有较高要求,所以对HBase在查询性能方面做了实验对比,实验结果如图9所示,图中统计了在不同数据量下,五次查询用时以及平均用时。

结论:首次查询需要建立客户端与集群的连接,需要较长时间,具体时间的长短受网络拥塞状况、集群运行状态等多方面因素影响。连接建立后查询时间基本稳定在毫秒级,实验测试的结果显示Hbase能满足这方面的要求。

3)实验结果

以销售分析为例,可以从商品类别、时间、地点三个维度出发,分析商品的销售量、销售额、买家数量和卖家数量,为经营者进行销售历史统计和未来业务调整提供决策支持。例如,从地域维度进行分析,统计商品的销售量、销售额、买家数量和卖家数量,设计的HiveQL语句为:

select p.province_name as provinceName,sum(soi.count) as saleQuantity,sum(so.account_payable) as sale,count(distinct so.customer_code) as buyerQuantity,count(distinct so.company_code) as sellerQuantity

from sale_order so

join sale_order_item soi on so.order_code=soi.order_code join customer c on so.customer_code = c.customer_code join province p on c.province_id=p.province_id group by p.province_name;

以中国地图的形式构建其分析模型mapmodel,Java代码如下:

//从HBase中读取数据分析结果集

StringTokenizer tokenizer = new StringTokenizer(allproperty, "*");

while (tokenizer.hasMoreElements()) {

//数据转换与重组

String name = (String) tokenizer.nextElement();

String svalue = HbaseTest.get(tablename, model + name + today, columnFamily, target);

double dvalue = Math.round(Double.parseDouble(String.format(svalue, "0.f")));

if (dvalue > maxValue) {

maxValue = dvalue;}

content += ",{\"name\":\"" + name + "\",\"value\":" + dvalue + "}";}

//构建分析模型

mapmodel = "{\"title\":{\"subtext\":\"数据更新于" + today + "\"},\"dataRange\":{\"max\":" + Math.round(maxValue)+ "},\"series\":{\"data\":[" + content.substring(1) + "]}}";

//结果写入HBase数据库

HbaseTest.put(tablename, model + today, columnFamily, "map" + target, mapmodel);

图形可视化采用的是百度的echarts插件,首先从HBase中读取已建立的分析模型数据,前台通过js进行数据解析,然后由echarts实现画图和渲染,最后的可视化图形如图10所示。

5 结束语

本文提出了基于Hadoop平台构建商业数据可视化分析模型的设计方案,通过对商业数据特性的分析和数据可视化技术的研究,将数据从关系型数据库集成到Hadoop平台,使用统计分析等方法对数据进行处理和分析,重点介绍了数据分析、分析模型的建立及其存储,并在特定的应用背景下实现和验证了所提出的商业数据可视化分析模型建立的可行性。

参考文献:

[1] 刘文峰, 顾君忠, 林欣, 等. 基于Hadoop和Mahout的大数据管理分析系统[J]. 计算机应用与软件, 2015, 32(1).

[2] 戴中华, 盛鸿彬, 王丽莉. 基于Hadoop平台的大数据分析与处理与处理[J]. 通讯世界, 2015(6).

[3] 孟志青, 段智华. 商业销售分析数据仓库的数据可视化的一种设计[J]. 计算机工程与应用, 2000, 36(10).

[4] 谌颃. 基于Hadoop的标签推荐系统设计[J]. 应用技术与研究, 2015(7).

[5] 刘勘, 周晓峥, 周洞汝. 数据可视化的研究与发展[J]. 计算机工程, 2002,28(8).

[6] 李伟, 张爽, 康建东,等. 基于hadoop的电网大数据处理探究[J]. 电子测试, 2014(1).

[7] 黄辉, 陆利忠, 闫镔, 等. 三维可视化技术研究[J]. 信息工程大学学报, 2010, 11(2).

[8] 梁辰, 徐健. 社会网络可视化的技术方法与工具研究[J]. 现代图书情报技术, 2012(5).

猜你喜欢

数据可视化分析模型电子商务
基于BERT-VGG16的多模态情感分析模型
《电子商务法》如何助力直销
电子商务
可视化:新媒体语境下的数据、叙事与设计研究
我国数据新闻的发展困境与策略研究
层次分析模型在结核疾病预防控制系统中的应用
关于加快制定电子商务法的议案
全启发式语言分析模型
IFC4结构分析模型应用技术