童年原是一生最美妙的阶段,那时的孩子是一朵花,也是一颗果子,是一片懵懵懂懂的聪明,一种永远不息的活动,一股强烈的欲望。——巴尔扎克
现在位置:首页 > 发表在 2020年02月 的所有文章
  • 大数据平台建设系列:(四)数据集市和指标体系建设中的困难

    2020-2-80评论12531
    一.数据集市起源 数据仓库和数据集市都是企业的一种数据分析环境。数据仓库数据规模较大、建设周期比较长,一些规模比较小的企业,数据规模不大,投入精力有限,没必要建立大型的数据仓库,小而美的数据集市更适合他们。规模较大的企业或集团已经建立起数据仓库,为更好的给业务部门、子公司提供不同主题(例如:用户、商品等)的数据,会在数据仓库的基础上,构建面向部门特定主题的数据集市。我们把第一种称为独立数据集市,第二种成为非独立数据集市。 独立数据集市:上游数据源为业务系统,具有自己的ETL处理过程,实现相对简单,是一种小型数据仓库;实现方案:将需要分析的数据接入到分析型数据库即可,分析型数据库可选择Apache Kylin、Apache Druid、Clickhouse等。如果需要图形化展现Superset会是个比较好的选择。上述方案实现速度快,成本比较低。 非独立数据集市:数据源为数据仓库,存储数据仓库统计分析后的结果,有特定的应用主题,强调数据使用的灵活性(上卷、下钻等)。实现方案上侧重点在纬度建模(星型、雪花、星座等),分析型数据库选型可参照独立数据集市。 从数据集市的起源我们可以看出数据集市与数据仓库的区别,独立数据集市可以理解为一种小型数据仓库。非独立数据集市是数据仓库的延伸,目的是更好的组织和规划数据。至于如何建设数据集市可根据自身企业特点,我们剩下的内容主要谈一下非独立数据集市建设中的困难。 二.数据集市和指标体系建设中的困难 我们先抛出一个问题:有了数据仓库为什么还需要数据集市呢? 这个问题困扰过我一段时间,直到公司在规划数据资产管理方面系统时,才渐渐有了些体会,可以简单说一下自己的观点。在没有数据集市之前,我们将数据仓库的分析结果同步到数据报表平台,供业务方使用,久而久之,我们处理的需求越来越多,统计指标也越来越多,被需求方牵着鼻子走,如果数据处理方能提前跟业务方沟通好相关主题、统计逻辑,提供方便灵活的数据获取方式,完全可以避免上述问题。另外通过建设数据集市梳理好指标体系,将为后续的数据资产化节省很多时间。 因此数据集市的建设很必要,它使数据仓库更加灵活,数据处理方能化被动为主动,通过梳理指标体系为后续数据资产管理打下基础。 指标体系建设中的困难 我们在日常处理数据需求时,经常会碰到相同指标名称统计结果不一致的现象,一旦出现该现象,排查原因和解释成本比较高。老指标应对新规则以及指标定义频繁变化是指标体系建设过程中遇到的比较大的问题。在摸索实践中发现分类治理可以解决该问题。我们将数据指标分为活跃指标和稳定指标两类,具体定义和处理方式如下: 数据集市数据指标定义 我们聊了下数据集市和指标体系建设,简单说了下我们在建设指标体系过程中遇到的问题,可能不具有共性,希望在大家遇到该问题时,能够提供一种解决思路。
  • 大数据平台建设系列:(三)实时数据仓库(实时数仓)建设

    2020-2-80评论14350
    一.实时数仓的产生 传统意义上的数据仓库主要处理T+1(有的也称为D+1)数据(即:今天产生的数据分析结果明天才能看到),T+1的概念来源于股票交易,是一种股票交易制度,即当日买进的股票,要到下一个交易日才能卖出。 随着数据时效性在企业运营中的重要性日益凸现,例如,实时推荐、精准营销、广告投放效果、实时物流等。数据的实时处理能力成为企业提升竞争力的一大因素,最初阶段企业主要采用来一个需求,编写一个实时计算任务的方式来处理实时数据,随着需求的增多,计算任务也相应增多,并且不同任务的开发人员不同,导致开发风格差异化,该阶段的实时数据处理缺乏统一的规划,代码风格差异化严重,在维护成本和开发效率上有很大障碍。 为避免上述问题,人们参照数据仓库的概念和模型来重新规划和设计实时数据处理,在此基础上产生了实时数据仓库(实时数仓)。 二.离线数仓与实时数仓对比 离线实时数仓对比图 在这里简单说一下大数据数据仓库的架构: 离线大数据架构:HDFS存储,hive、mr、spark进行离线计算; Lambda架构:在离线大数据架构的基础上增加新链路用于实时数据处理,需要维护离线处理和实时处理两套代码; Kappa架构:批流合一,离线处理和实时处理整合成一套代码,运维成本小,这就是现今flink之所以火的原因。Kappa架构已成为数据仓库架构的新趋势。 三.实时数仓建设思路 计算框架选型:storm/flink等实时计算框架,强烈推荐flink,其『批量合一』的特性及活跃的开源社区,有逐渐替代spark的趋势。 数据存储选型:首要考虑查询效率,其次是插入、更新等问题,可选择apache druid,不过在数据更新上存在缺陷,选型时注意该问题频繁更新的数据建议不要采用该方案。当然存储这块需要具体问题具体分析,不同场景下hbase、redis等都是可选项。 实时数仓分层:为更好的统一管理数据,实时数仓可采用离线数仓的数据模型进行分层处理,可以分为实时明细层写入druid等查询效率高的存储方便下游使用;轻度汇总层对数据进行汇总分析后供下游使用。 数据流转方案:实时数仓的数据来源可以为kafka消息队列,这样可以做到队列中的数据即可以写入数据湖用于批量分析,也可以实时处理,下游可以写入数据集市供业务使用。 实时数仓流转图 综上,实时数仓主要解决数据时效性问题,结合机器学习框架可以处理实时推荐、实时获取广告投放效果等智能化业务场景。实时数仓的建设应早日提上日程,未来企业对数据时效性的要求会越来越高,实时数仓会很好的解决该问题。
  • 大数据平台建设系列:(二)浅谈数据仓库管理体系

    2020-2-80评论12094
    数据仓库首要解决的问题是数据孤岛问题!在企业生产过程中,每个部门、子公司都会产生数据,数据如果不能统一管理,久而久之部门间或子公司间的数据会烟囱式生产,最终会形成数据孤岛。 数据孤岛只能片面的反应生产经营情况,缺乏全局的数据支持,是分析决策的大忌。因此,数据仓库在解决了数据孤岛问题后,才可以谈指标体系、资产管理等概念。良好的数据仓库管理体系需覆盖企业生产经营的所有数据,才能全面、真实、客观的反应企业发展情况。数据仓库需具备企业全域数据收集和存储能力(数据湖),在此基础上展开ETL分析。 数据仓库管理体系图 为保证数据处理的时效性,实时数据仓库也需要规划到数据仓库体系中。数据仓库的下游对应不同主题域的数据集市,数据使用方从数据集市中获取他们需要的数据。 因此我觉得良好的数据仓库管理体系应该包含以下几部分内容: 1.数据湖:负责企业全范围的数据收集和存储,避免数据烟筒式生产的关键; 2.数据仓库:离线数据仓库(传统意义上的数据仓库)、实时数据仓库(解决数据时效性问题),负责对数据湖中的数据进行ETL; 3.数据集市:数据仓库分析结果的载体,根据不同场景划分为不同的主题域。是后续开展指标体系、数据质量体系,数据资产体系的关键因素。
  • 大数据平台建设系列:(一)浅谈数据中台提供的能力

    2020-2-80评论12886
    市场竞争环境的日益加剧,数据在企业发展过程中的重要性日益凸现,因此数据中台的概念时下变得火热。数据中台最终要落地到『数据』和『能力』两个方面上,数据是指企业生产过程中产生的数据;能力是指在数据处理、利用、精准赋能方面的体现出的优势。数据中台需要帮助企业建立起竞争优势,对内做到数据及时的开放和共享,对外能够建立起竞争壁垒和护城河。数据中台需提供以下几种能力: 数据中台需提供的能力 1.数据资产管理:数据资产管理能力是指数据仓库(实时数仓、离线数仓)建设、数据质量监控、数据指标体系等数据管理能力,将数据定义为一种资产或服务为业务赋能; 2.数据开放共享:数据不能仅仅止步于数据仓库,变成死数据,流转起来的数据才能发挥其价值,数据开放共享能力需要做到对企业内部在数据需求方面的予取予求,指哪打哪,精准赋能,一般会通过报表平台、BI工具、API服务的方式实现。 3.开发协作调度:开发协作调度能力主要解决数据处理的效率问题,通过开发平台的方式提升离线分析、实时分析、机器学习、人工智能等数据处理效率,提升数据流通速度; 4.数据采集迁移:数据采集迁移能力解决数据源头问题,通过统一的方式收集业务数据,在合规合法的范围内采集企业内部所需要的数据。同时能够完成数据在企业内部迁移流转。 5.平台运维管控:良好的运维管控能力,能够保障计算资源、存储资源正常运行,保证数据正常生产和产出。主要是指大数据生态工具的运维管控能力。 6.数据可视化及自助分析:数据可视化主要解决数据展现能力,利用图表的方式诠释数据意义,更好的理解和利用数据;自助分析能力让业务人员,产品等非技术人员开展数据分析工作,做到人人都是数据分析师。
  • Java开发者推荐的10种常用工具

    建站知识2020-2-80评论12733
    以下是Java程序员在日常生活中最常用的10种工具。如果你正在使用Java,本文介绍将会对你有所帮助,如果你还不熟悉这些工具,在这里你可以对它们进行更加系统的了解。 1) IDE:Eclipse和NetBeans IDE是Java开发人员最为重要的工具。IDE不仅提供了集成的开发环境,还能够帮助导航、调试和记录代码。Eclipse作为行业领导者,有一半的Java开发人员都在使用它。而在编写测试程序、测试和调试Java web开发的新事物方面,我更推崇Netbeans,这是因为在web开发方面Netbeans更加容易使用,它附带了tomcat已经其它的一些应用服务器,方便于项目的创建、运行与调试。 2) 文本编辑器:Edit Plus, Notepad++和Sublime Edit plus和Notepad++是两个不同用法的文本编辑器——记录随机想法,查看部分日志文件或者文档创建。Edit Plus最优秀的地方是它非常快速、流畅,并支持所有正则表达式的查找和替换任务。Notepad++可以打开任何类型的Java文件,甚至包含了未在IDE配置的文件,此外,它还支持语法高亮,这使得代码的阅读更加容易。此外,SubLime文本编辑器也备受人青睐,它有一个最大的好处就是免费。 3) 浏览器:Chrome和Firefox 无论你是在Java、C++、UNIX还是Network领域,在软件开发中,Google都是你的朋友和最重要的工具之一。为了有效地使用Google的服务,在IE没落的今日,你需要一个快速而流畅的浏览器,Google Chrome和Firefox是我最喜欢的两款浏览器。它们包含了检查和可视化等功能的内置web工具,因此,你可以使用它们检查HTML、CSS代码,进行代码修改调试,检查HTML、JavaScript文件在加载时所产生的错误等,这些信息对于Java EE开发人员和其它web开发人员是非常有用的。整个工具套件也被称为Chrome开发工具。 4)数据库开发:Aqua Data Studio Aqua Data Studio是基于Java的数据库开发工具。你可以使用Aqua Data Studio连接Oracle、Sybase或SQL Server数据库。因此,如果你没有使用Oracle developer Studio或SQL Server Management Studio等特定于数据库的工具的时候,可以考虑AquaStudio。如果你需要连接到不同类型的数据库,那么它就更有用了,此外,除开AquaStudio的另一种选择是DB Artisan,但我不是很推荐它。Aqua Data Studio和DB Artisan都是付费工具,你需要授权许可才能使用。 5) XML文件工具:XMLSpy XMLSpy是一个用于处理XML文件的收费软件,它支持XML文件搜索、XPATH查找、XPATH和XSLT的转换。XMLSpy的一个突出优点是支持对4,5M这样的大型XML文件进行处理,而不用担心其在Windows环境中崩溃。虽然你也可以使用Notepad + +或Internet explorer来打开XML文件,但在处理大型XML文件时会出现崩溃的状况,因此它们都不是最佳的选择。 6)插件:Eclipse插件 我使用过Eclipse中的大量插件,比如,用于反编译Java类文件的JadEclipse,用于创建UML图的eUML,用于创建和运行基于Maven项目的M2Eclipse,用于连接Eclipse源代码控制存储库的SVN和CVS插件以及用于静态代码分析的Findbugs插件。此外,这里还包含了许多关于Git的插件,这意味着你可以在Eclipse的Git存储库中创建Java项目。 7)服务器连接:Putty和Putty Connection Manager 由于我主要在Linux平台上工作,并且总是需要连接到不同的Linux服务器,因此我经常将Putty Connection Manager与Putty搭配一起使用。Putty是一个SSH客户端,它支持连接到任何UNIX服务器,并且通过使用Putty Connection Manager,你可以预先配置所有主机、用户名和密码,这将为你提供对任何主机的一键访问。如果你必须登录在多个环境中,例如测试、开发、验收测试、QA等,我强烈建议使用Putty Connection Manager。此外,Putty connection manager还有一些不错的替代者,比如mRemote和Putty Multi-Manager。 8)文件传输:FileZilla 如果你的开发环境是Windows,而你的应用程序需要运行在UNIX或者Linux上,那么你肯定需要一个工具来将文件从Windows转移到Linux或者从UNIX到Windows。 有许多工具和sftp客户端支持你将文件从Linux复制到Windows上,我尝试过FileZilla和WinSCP,但FileZilla才是我的最爱。通过SFTP,它可以将文件从Windows转到Linux,或者从Linux到Windows。FileZilla的下载使用是免费的,这真是一个了不起的FTP客户端。 9)文本文件对比:Beyond Compare Beyond Compare是我最喜欢的比较工具。在开发的过程中,文件对比是最常见的工作之一,有时文件产生了变更需要了解变化,有时需要对比两个不同服务器的配置文件,有时需要比较两个不同版本的文件以了解bug产生的时段。虽然,你也可以使用Eclipse中的文本文件对比功能,但是在预发布和发布后活动方面Beyond Compare更有帮助,它能够验证所有文件是否处于正确的位置。Beyond Compare还可以直接对比UNIX窗口的文件、文件夹和路径,这为你了解哪些文件被新增和移除提供了可视化。Beyond compare不是一个免费的工具,它需要授权许可才可以使用。我正在寻找一个能够提供类似功能的免费工具,虽然WinMerge可以作为一个参考,但还是不很理想。 10)命令行工具:Cygwin 由于我主要在UNIX窗口上工作,我的全部Java应用程序都运行在这个环境里。但是,当我需要在Windows山上工作时,许多工具和命令都无法再使用,比如find、grep, xargs和vi。Cygwin可以在Windows上搭建仿UNIX环境,因此,如果你碰巧喜欢Linux,并且在Windows中开发Java程序时错过了它,那么Cygwin是一个不错的选择。此外,你也可以在VirtualBox上设置环境,并在这里安装Linux。 以上就是推荐Java程序员使用的工具列表。还有一些其它的工具,比如深受Java开发者欢迎的基于Windows的SVN客户端工具tortoise SVN和CVS,微软的Office系列工具Excel、Word、PowerPoint等,我没有在列表中列举,但是非常重要。还有对Java JEE开发者非常有用的工具Chrome Developer Tools、Firebug和Postman,它们都值得一提。

sitemap