维度

马蜂窝数据仓库的架构、模型与应用实践

拜拜、爱过 提交于 2019-11-30 18:11:37
(马蜂窝技术原创内容,公众号ID:mfwtech) 一、马蜂窝数据仓库与数据中台 最近几年,数据中台概念的热度一直不减。2018 年起,马蜂窝也开始了自己的数据中台探索之路。 数据中台到底是什么?要不要建?和数据仓库有什么本质的区别?相信很多企业都在关注这些问题。 我认为数据中台的概念非常接近传统数据仓库+大数据平台的结合体。它是在企业的数据建设经历了数据中心、数据仓库等积累之后,借助平台化的思路,将数据更好地进行整合与统一,以组件化的方式实现灵活的数据加工与应用,以更清晰的数据职能组织应对业务的快速变化,以服务的方式更好地释放数据价值的一种方式。 所以,数据中台更多的是体现一种管理思路和架构组织上的变革。在这样的思想下,我们结合自身业务特点建设了马蜂窝的数据中台,核心架构如下: 在中台建设之前,马蜂窝已经建立了自己的大数据平台,并积累了一些通用、组件化的工具,这些可以支撑数据中台的快速搭建。作为中台的另一大核心部分,马蜂窝数据仓库主要承担数据统一化建设的工作,包括统一数据模型,统一指标体系等。下面介绍马蜂窝在数据仓库建设方面的具体实践。 二、数据仓库核心架构 马蜂窝数据仓库遵循标准的三层架构,对数据分层的定位主要采取维度模型设计,不会对数据进行抽象打散处理,更多注重业务过程数据整合。现有数仓主要以离线为主,整体架构如下: 如图所示,共分为 3 层: 业务数据层

Kylin 入门

放肆的年华 提交于 2019-11-30 15:38:43
1 Kylin 概述 1.1 Kylin定义 Apache Kylin 是一个开源的分布式分析引擎,提供 Hadoop/Spark 之上的 SQL 查询接口及多个维度分析(MOLAP)能力以支持超大规模数据,它能在亚秒内查询巨大的 Hive 表。 1.2 术语解释 Data Warehouse(数据仓库):数据仓库是一个各种数据(包括历史数据和当前数据)的中心存储系统,是BI( business intelligence ,商业智能)的核心部件 Business Intelligence(商业智能):商业智能通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具 OLAP(online analytical processing):OLAP(online analytical processing)是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的,从各方面观察信息,也就是从不同的维度分析数据,因此 OLAP 也成为多个维度分析 星型模型: 事实和维度: 1.3 架构 1、REST Server:是一套面向应用程序开发的入口点,旨在实现针对 Kylin 平台的应用开发工作,此类应用程序可以提供查询、获取结果、触发 Cube 构建任务、获取元数据以及获取用户权限等等,另外可以通过 Restful 接口实现 SQL

项目经验总结-Eclipse图表工具Birt的使用技巧(二)

≯℡__Kan透↙ 提交于 2019-11-30 14:04:29
作为 Eclipse图表工具Birt的使用技巧(一) 的后续,上一篇主要说明了Birt报表创建和使用的基本步骤和过程,本文旨在介绍一些常用的技巧,都是比较实用而且经过我本人实践可行的,希望能给需要的人带来一些帮助. 1. 报表参数传递 参数传递的应用场景比较广泛,在Birt设计器中有两个位置涉及到参数,一个是DataSet数据集创建的时候,有一个Parameters选项,另外就是在Data Explorer中有一个Report Parameters,这里主要介绍后者.因为Birt参数的对外接口就是Report Parameters,数据集中的参数也要通过这个报表参数去设置. 首先新建一个报表参数,如图: 这里创建一个默认名称的参数,其中Display type表示这个参数的显示类型,与它边上的hidden选项对应,如果hidden不打勾,说明这个参数会以Birt默认的View界面的形式表现.可以是多种形式,就是弹出一个窗口,要用户输入,这不符合项目的需要,所以通常我们将参数hidden.如下: 这时创建好了参数,说一点,这个参数的可作用范围是整张报表的rptdesign文件,在可以输入脚本和表达式的地方都可以通过params["NewParameter"].value使用.上面hidden复选框上面还有一个Is Requeired选项,如果勾选,意味必须要传递这个参数

Python对图片增加维度

女生的网名这么多〃 提交于 2019-11-30 13:51:11
学习pytorch框架时发现的一个技巧,选中本地图片经过神经网络提取特征时,由于神经网络要求图片四维——数量×通道数×长×宽,而本地选取单张图片只有:通道数×长×宽,用numpy.reshape()可以对其扩维。 import numpy from PIL import Image img = Image.open('/home/1.jpg') #将PIL转换为numpy.array才能用reshape函数 img = np.array(img) img = img.reshape(1,3,32,32) 这样就不会因为维度问题再报错。 PS:神经网络要求tensor类型,注意转换 来源: CSDN 作者: 心里有党 链接: https://blog.csdn.net/weixin_39386156/article/details/89388776

为什么需要OLAP DSL?

∥☆過路亽.° 提交于 2019-11-30 12:12:47
OLAP(On-Line Analytical Processing,联机分析处理)是大数据场景中,数据价值探索与挖掘的重要环节。这个领域内,开源社区呈现百花齐放的现象,Elasticsearch、Druid、Clickhouse、Pinot、Kylin、Presto等,各自在业界都有着广泛的应用场景。实际使用过程中,通常会经历以下三个阶段: 业务初期,面临多种选择,如何做技术选型?这时场景较单一,需要解决的问题相对固定,这时简单比较下开源组件各自的特性,参考下业界的使用情况;再或者部署测试环境,模拟业务验证;通常都能够选取出其中一个组件,投入实际生产环境; 业务中期,随着数据需求的不断丰富变化,开源组件需要支撑的应用场景也越来越多,比如:多维统计查询、可视化、报表、监控报警等;本质上,不管是什么样的开源组件,还是为解决“某一类”场景问题设计实现的,这种“大而全”的一站式打包服务是完全不能够胜任的;随着时间推移,服务自身特性的局限与日益丰富的需求场景之间的矛盾愈演愈烈,解决方案也比较简单:尝试引入多个开源组件; 业务后期,大家会不约而同地处于这样的一个现状:生产环境中运行着多个开源组件,服务于业务场景中的多个需求; 综上所述,使用某一个组件,寄希望于它能够应对各种需求(“All In One”)的方式是不可行的,每种组件各有利弊,有的擅长检索,有的擅长统计;最好的方式是结合实际需求

Normalization是什么

笑着哭i 提交于 2019-11-30 05:29:19
一、Normalization是什么 Normalization一句话概括来说就是用一种办法,将一组数据压到均值为0,方差为1的正态分布上去,具体做法是数据集的每一个元素减去均值再除以标准差。公式如下:(请忽略参数g,g的问题很诡异,后面说) 这个公式说的更直白一点就是,把每一个a,经过平移和缩放,得到一个新值。而这样做的一个理由是,平移缩放并不会改变原始数据的分布情况,原来最大的还是最大,原来最小的还是最小。 Deeplearning中有很多Normalization的方法,有BN、LN、IN、GN等等,每一种Normalization公式都一样,只是沿着的轴不一样,BN就是沿着minibatch方向,LN就是沿着影藏层的output vector维方向,举个例子,对于四维张量[minibatch,depth、height、width],那就是沿着depth方向,把height、width维约简掉。 二、说说Layer Normalization 论文地址:http://jintianxuesha.com/?id=190 Layer Normalization对于时间序列数据有奇效,下面截一段论文的原文。这是在RNN上用Layer Normalization 简短的话说一下论文的变量含义,a表示t时刻点rnn的预输出值(还没有经过激活函数哦),h表示rnn某一个隐层t时刻点的输出

keras 维度不对等问题

蓝咒 提交于 2019-11-29 23:40:27
1.在windows下面找到keras的配置文件, 修改channel_last 或者channel_first C:\Users\Administrator\.keras\keras.json 2. .在linux下面找到keras的配置文件, 修改channel_last 或者channel_first /home/.keras/keras.json 来源: CSDN 作者: 页页读 链接: https://blog.csdn.net/u014386899/article/details/95931766

解决:RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 544 and 1935 in dimension 2 at ../aten/src/TH/generic/THTensor.cpp:711

荒凉一梦 提交于 2019-11-29 20:54:42
这种 错误有两种可能 :    1. 你输入的图像数据的维度不完全是一样的,比如是训练的数据有100组,其中99组是256*256,但有一组是384*384,这样会导致Pytorch的检查程序报错    2. 比较隐晦的batchsize的问题,Pytorch中检查你训练维度正确是按照每个batchsize的维度来检查的,比如你有1000组数据(假设每组数据为三通道256px*256px的图像),batchsize为4,那么每次训练则提取(4,3,256,256)维度的张量来训练,刚好250个epoch解决(250*4=1000)。但是如果你有999组数据,你继续使用batchsize为4的话,这样999和4并不能整除,你在训练前249组时的张量维度都为(4,3,256,256)但是最后一个批次的维度为(3,3,256,256),Pytorch检查到(4,3,256,256) != (3,3,256,256),维度不匹配,自然就会报错了,这可以称为一个小bug。 解决办法 :   对于 第一种 :整理一下你的数据集保证每个图像的维度和通道数都一直即可。   对于 第二种 :挑选一个可以被数据集个数整除的batchsize或者直接把batchsize设置为1即可。 来源: https://www.cnblogs.com/zxj9487/p/11531888.html

Python-数据分析工具1-numpy

怎甘沉沦 提交于 2019-11-29 19:30:46
目录 1 ndarray数组 (0)ndarray数组属性 (1)创建基本数组 (2)创建特殊数组 (3)数组变换 (4)Numpy随机数函数 2 数组索引和切片 (0)数组切片:数组切片可以实现连续多元素选择 (1)数组索引 (2)布尔型索引 (3)花式索引 3 数组的运算 (0) 数组和标量间的运算(数组可以直接和标量进行算术、关系等运算) (1)通用函数运算(一种可以对数组间执行元素级运算的函数) (2)统计函数运算(对整个数组内或按指定轴向的数据进行统计) (3)集合函数运算 (4)条件逻辑运算 (5)布尔型数组运算 4 数组的存取 5 图像变换 1 ndarray数组 (0)ndarray数组属性 (1)创建基本数组 1.首先导入numpy库 import numpy as np 2.然后使用构造函数:np.array(arg),参数arg可以是列表或者元组 3.可以通过列表或元组创建一维、二维或多维数组 4.获得dtype(元素类型)和shape(数组维度)属性:arr.dtype和arr.shape 5.创建数组时显示说明类型:np.array(list, dtype=“type”) (2)创建特殊数组 1.创建全0数组函数 np.zeros((5,6)):创建指定长度或形状的全0数组。 np.zeros_like(a):创建与a对象相同尺寸的全0数组。a可以是列表

kylin从入门到实战:实际案例

流过昼夜 提交于 2019-11-29 17:37:31
kylin从入门到实战:实际案例 版权申明:转载请注明出处。 文章来源: http://bigdataer.net/?p=308 排版乱?请移步 原文 获得更好的阅读体验 前面两篇文章已经介绍了kylin的相关概念以及cube的一些原理,这篇文章将从一个实际的案例入手,介绍如何在kylin平台上创建一个多维分析项目。 1.创建project 进入kylin操作界面,如果没有project可以创建,kylin里面可以创建多个project,有效的把各种业务数据分析隔离开来。如图: 如下,填写project name,description可以不填 然后submit 提交,project创建成功。 2.添加数据源 点击DataSource选项卡->Load Hive Table 填写hive表名,前面加上库名 然后点击sync,导入数据源成功,可以看到如下信息: 3.创建model 添加model name然后 next 选择刚才添加到数据源中的事实表,如果有Lookup Table也可添加,然后next 选择需要的维度 选择需要的指标 相关设置 partition date colume表示分区字段,选择hive表中按时间分区的字段。然后从date format中选择不同的时间格式。最下面的filter可以添加where条件对数据源中的数据做过滤。 至此,model创建完成。 4