精华内容
下载资源
问答
  • 通过脚手架构建项目的时候项目缺失了node_modules文件夹,在我排除了node环境、和配置的环境变量、vue-cli和webpack等一切都没有问题的情况下 差点重新删除node环境和vue脚手架等重装了,但是幸亏我多看了几眼cmd, ...

    昨晚,在教我前端交流群里面的朋友搭建vue开发环境和构建vue项目的时候发现我自己之前能正常构建vue项目的现在却不行了,排查之下发现

    通过脚手架构建项目的时候项目缺失了node_modules文件夹,在我排除了node环境、和配置的环境变量、vue-cli和webpack等一切都没有问题的情况下

    差点重新删除node环境和vue脚手架等重装了,但是幸亏我多看了几眼cmd, 发现了貌似是和package-lock.json有关,于是我尝试通过:

    npm install express 来解决问题,结果是 node_modules文件夹已经出来了,但是依然没有办法通过  npm run dev  正常运行

    于是继续 npm install  发现还是不行,后来发现其实问题很简单,

     npm install的执行过程是这样的:

      1. 发出npm install命令

      2. npm 向 registry 查询模块压缩包的网址

      3. 下载压缩包,存放在(本地NPM缓存路径)目录

      4. 解压压缩包到当前项目的node_modules目录

      也就是说一个模块安装以后,本地其实保存了两份。一份是 npm 目录下的压缩包,另一份是 node_modules 目录下解压后的代码。但是,运行 npm install 的时候,只会检查 node_modules 目录,而不会检查 npm 目录。如果一个模块在 npm 下有压缩包,但是没有安装在 node_modules 目录中,npm 依然会从远程仓库下载一次新的压缩包。

      利用已经在缓存中,之前已经备份的模块实现离线模块安装的 cache 机制已经在V5的时候重写了,缓存将由 npm 来全局维护,不再需要开发人员操心,离线安装时将不再尝试连接网络,而是降级尝试从缓存中读取,或者直接失败。就是如果你 offline(离线) ,npm将无缝地使用您的缓存。

      所以解决办法就是执行命令清除缓存,npm cache clean --force 命令就是清除这种缓存的,

    在执行清除命令之后再重新 npm  install 初始化项目如果卡住一直不动,可以重新 npm install 重新初始),初始化成功之后再通过 npm run dev 就可以正常运行了

    由于解决问题的时候没有截图,所以只能使用文字来描述。

    在解决了之后以后的项目就可以通过普通的方法构建项目了,直到再次出现这样的问题才需要进行上面的操作。

     

    转载于:https://www.cnblogs.com/hermit-gyqy/p/11219113.html

    展开全文
  • 1.缺失值产生原因 数据预处理过程常常占据模型构建与分析过程中70%的工作量。在实际的各种场景当中,出现缺失值的情况经常出现甚至是不可避免的,这主要是由于信息系统设计的不完备以及数据库设计过程中完整性定义...

    目录

    1.缺失值产生原因

    1.1 机械原因

    1.2 人为原因

    2.数据缺失机制

    3.缺失值处理的三种主要类型

    3.1 删除对象

    3.2数据补齐

    3.2.1人工填充

    3.2.2平均值填充

    3.2.3热卡填充

    3.2.4KNN填充

    3.2.5使用所有可能的值填充

    3.2.6组合完整化方法

    3.2.7回归方法

    3.2.8期望值最大化方法

    3.2.9多重填补

    3.2.10 C4.5方法

    3.3 不处理

    4.总结

    5.参考文章


    1.缺失值产生原因

    数据预处理过程常常占据模型构建与分析过程中70%的工作量。在实际的各种场景当中,出现缺失值的情况经常出现甚至是不可避免的,这主要是由于信息系统设计的不完备以及数据库设计过程中完整性定义有缺陷。总体可总结为“机械原因”和“人为原因”。缺失值的存在导致“系统丢失了大量的有用信息”以及“影响模型性能”。

    1.1 机械原因

    机械原因是由于机械原因所导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败存储器损坏机械故障导致某段时间数据未能收集(对于定时数据采集而言)。

    1.2 人为原因

    人为原因是由于人的主观失误、历史局限或有意隐瞒造成的数据缺失,比如,在市场调查中被访人拒绝透露相关问题的答案,或者回答的问题是无效的,数据录入人员失误漏录了数据造成数据缺失的原因是多方面的。主要有一下几种:

    1)有些信息暂时无法获取。例如在医疗数据库中,并非所有病人的所有临床检验结果都能在给定的时间内得到,就致使一部分属性值空缺出来。又如在申请表数据中,对某些问题的反映依赖于对其他问题的回答。

    2)有些信息是被遗漏的。可能是因为输入时认为不重要、忘记填写了或对数据理解错误而遗漏,也可能是由于数据采集设备的故障、存储介质的故障、传输媒体的故障、一些人为因素等原因而丢失了。

    3)有些对象的某个或某些属性是不可用的。也就是说,对于这个对象来说,该属性值是不存在的,如一个未婚者的配偶姓名、一个儿童的固定收入状况等。

    4)有些信息(被认为)是不重要的。如一个属性的取值与给定语境是无关的,或训练数据库的设计者并不在乎某个属性的取值(称为dont-care value)。

    5)获取这些信息的代价太大

    6)系统实时性能要求较高,即要求得到这些信息前迅速做出判断或决策。

    2.数据缺失机制

    不含缺失值的特征(变量)称为“完全变量

    含有缺失值的特征(变量)称为“不完全变量

    1)完全随机缺失(Missing Completely at Random,MCAR)。数据的缺失与不完全变量以及完全变量都是无关的。

    2)随机缺失(Missing at Random,MAR)。数据的缺失仅仅依赖于完全变量。

    3)非随机、不可忽略缺失(Not Missing at Random,NMAR,or nonignorable)。不完全变量中数据的缺失依赖于不完全变量本身,这种缺失是不可忽略的。

    从缺失值的所属属性上讲,如果所有的缺失值都是同一属性,那么这种缺失成为单值缺失,如果缺失值属于不同的属性,称为任意缺失。另外对于时间序列类的数据,可能存在随着时间的缺失,这种缺失称为单调缺失

    3.缺失值处理的三种主要类型

    3.1 删除对象

    优点:操作简单,被删对象占总对象比重较小时非常有效,通常在类别标号缺少时使用

    缺点:资源大量浪费,丢弃了大量隐藏在删除对象中的信息,不适用于缺失值非随机分布的情况,可能导致数据发生偏离

    3.2数据补齐

    该种方法通常基于统计学原理,根据当前缺失值所在特征的其他非缺失特征值的分布情况来进行填充,常用的几种数据补齐方法如下:

    3.2.1人工填充

    优点:对数据更加了解,产生的数据偏差最小,可能是填充效果最好的一种

    缺点:费时费力,当数据规模较大时或缺失值较多时,该种方法不可行

    3.2.2平均值填充

    优点:采用现存数据的多数信息来推测缺失值

    缺点:对异常值较为敏感

    3.2.3热卡填充

    优点:概念相对简单,利用的是相似对象的值来进行填充(找一个与缺失值对象最相近的对象)

    缺点:难以定义相似标准,主观因素太多

    3.2.4KNN填充

    优点:效率较高

    缺点:易引入自相关,且后期填充采用均值填充方式,对特殊特征值的敏感度较高

    3.2.5使用所有可能的值填充

    优点:缺失值填充效果较好(空缺特征的所有可能取值进行填充)

    缺点:当数据量较大或缺失值较多时,计算代价很大,可能的测试方案很多

    3.2.6组合完整化方法

    优点:缺失值填充效果较好(第一步:同3.2.5;第二步:从最终结果中选择最好的一个作为填补属性值)

    缺点:当数据量较大或缺失值较多时,计算代价很大

    3.2.7回归方法

    优点:缺失值对象缺失值的回归预测,效率较高

    缺点:当变量(特征)不是线性相关或预测变量高度相关时会导致有偏差的估计

    3.2.8期望值最大化方法

    优点:适用于大样本

    缺点:可能陷入局部极值,收敛速度不是很快,并且计算复杂

    3.2.9多重填补

    优点:①为每个缺失值生成一组可能的随机插补值(反映了无响应模型的不确定性),产生若干完整数据集②分别构建模型③判断最终模型性能,选择模型性能最优的填补值

    缺点:填充值可能受到空缺值的不确定性的影响,计算复杂

    3.2.10 C4.5方法

    优点:通过寻找属性之间的关系来对遗失值进行填充(代理属性->原始属性)

    缺点:仅能 处理奇数较小的名词性属性

    3.3 不处理

    “贝叶斯网络”+“人工神经网络”

    4.总结

    大多数数据挖掘系统都是在数据挖掘之前的数据预处理阶段采用第一、第二类方法来对空缺数据进行处理。并不存在一种处理空值的方法可以适合于任何问题。无论哪种方式填充,都无法避免主观因素对原系统的影响,并且在空值过多的情形下将系统完备化是不可行的。从理论上来说,贝叶斯考虑了一切,但是只有当数据集较小或满足某些条件(如多元正态分布)时完全贝叶斯分析才是可行的。而现阶段人工神经网络方法在数据挖掘中的应用仍很有限。值得一提的是,采用不精确信息处理数据的不完备性已得到了广泛的研究。不完备数据的表达方法所依据的理论主要有可信度理论、概率论、模糊集合论、可能性理论,D-S的证据理论等。

    5.参考文章

    https://www.cnblogs.com/magle/articles/6110195.html

     

    展开全文
  • 刚开始做技术,接触的是硬件相关的编程,因此基本不用小数(浮点数)进行运算,也就没留意到计算机中小数“失精”存储的问题了。最近两年进行网络编程开发,也就是应用层开发了,工作上就接触到很多使用浮点数运算的...

    刚开始做技术,接触的是硬件相关的编程,因此基本不用小数(浮点数)进行运算,也就没留意到计算机中小数“失精”存储的问题了。最近两年进行网络编程开发,也就是应用层开发了,工作上就接触到很多使用浮点数运算的场景,自然的,“失精”问题也就浮现了。

    理清精确缺失问题(失精)

    那么什么是”失精”问题?就是计算机是无法准确的存储大部分的十进制小数的。不信,可以运行以下C语言程序:

    #include "stdio.h"
    void main()
    {
        printf("%.7f", 10.2f-9.0f);
        getchar();
    }

    结果输出:0.1999998 而不是0.2000000

    既然知道了事实现象,我们就来研究下里面的真相。首先,我们将十进制的10.2用二进制表示:
    1010.001100110011………无限小数 (不要问我怎么转的,自己回去补一下转换过程)

    再者,将十进制9.0转化为二进制:1001(这个数小数部分为0,所以能够能用有限的数字表示)

    好的,将两者相减,就得到:0.001100110011……… 因为计算机存储位数的限制,不可能存储无限位二进制数字,因此最终采用老办法– 截取高位存储,于是结果就是0.001100110011…(IEEE754标准存储24位有效数字),转换为十进制7位小数输出,就得到了0.1999998这个数字。

    作为严谨的程序员,我们自然回想为什么十进制小数无法用二进制精确的表示呢?下面引入一个10cm长的杆子。
    这里写图片描述
    如果将1看做是这10cm的杆子,那么对于第一位小数,十进制的精度就是1cm,所以能准确的描述2/10的杆子长度4cm;但是二进制的精度是5cm,所以用二进制这个工具根本无法表示4cm,没法准确表示,怎么办呢?

    那就无限逼近咯,于是就出现了课本上教我们的十进制转二进制的简易数学方法了。

    好了,到此,就明白为什么0.2无法用二进制精确表示的了吧。

    那么再总结下规律,十进制中的0.0-0.9这是个小数里面,出了0.0和0.5能被二进制准确表示外,其他都无法准确表示的。同理以2为基数的4进制8进制16进制都有和二进制相同的规律。

    那么计算机程序是怎样处理这个问题的呢?

    1. 将浮点数用字符串存储起来,然后对字符进行十进制模拟运算,最后得出结果,这个方法在JAVA里面已经有现成的API。
    2. 对于比较成熟的语言,比如C,就会就运算之后,对结果进行进一步处理,如10.2-9.0=0.1999….,我们知道1位小数减去1位小数,得到的结果绝对不会超过1位小数。因此我们在运算前先记录最大的小数位数n,然后运算后,就对n+1位进行四舍五入的处理即可。

    最后提醒一下,要注意一些不太成熟的语言如:php等脚本语言,例子如下

    <?php
        $f = 0.57;
        echo (int)($f*100); //输出56而不是57
    ?>
    展开全文
  • 接着我们会探讨实时数据平台整体设计架构、对具体问题的考量以及解决思路。在下篇技术篇中,我们会进一步给出实时数据平台的技术选型和相关组件介绍,并探讨不同模式适用哪些应用场景。希望通过...

     

     

    本文将会分上下两篇对一个重要且常见的大数据基础设施平台展开讨论,即“实时数据平台”。在上篇设计篇中,我们首先从两个维度介绍实时数据平台:从现代数仓架构角度看待实时数据平台,从典型数据处理角度看待实时数据处理;接着我们会探讨实时数据平台整体设计架构、对具体问题的考量以及解决思路。在下篇技术篇中,我们会进一步给出实时数据平台的技术选型和相关组件介绍,并探讨不同模式适用哪些应用场景。希望通过对本文的讨论,读者可以得到一个有章可循、可实际落地的实时数据平台构建方案。
    一、相关概念背景
    1从现代数仓架构角度看实时数据平台
    现代数仓由传统数仓发展而来,对比传统数仓,现代数仓既有与其相同之处,也有诸多发展点。首先我们看一下传统数仓(图1)和现代数仓(图2)的模块架构:



    图1 传统数仓



    图2 现代数仓
    传统数仓大家都很熟悉,这里不做过多介绍,一般来说,传统数仓只能支持T+1天时效延迟的数据处理,数据处理过程以ETL为主,最终产出以报表为主。

    果你想了解大数据的学习路线,想学习大数据知识以及需要免费的学习资料可以加群:784789432.欢迎你的加入。每天下午三点开直播分享基础知识,晚上20:00都会开直播给大家分享大数据项目实战。
    现代数仓建立在传统数仓之上,同时增加了更多样化数据源的导入存储,更多样化数据处理方式和时效(支持T+0天时效),更多样化数据使用方式和更多样化数据终端服务。
    现代数仓是个很大的话题,在此我们以概念模块的方式来展现其新的特性能力。
    首先我们先看一下图3中Melissa Coates的整理总结:



    图3
    在图3 Melissa Coates的总结中我们可以得出,现代数仓之所以“现代”,是因为它有多平台架构、数据虚拟化、数据的近实时分析、敏捷交付方式等等一系列特性。
    在借鉴Melissa Coates关于现代数仓总结的基础上,加以自己的理解,我们也在此总结提取了现代数仓的几个重要能力,分别是:

    • 数据实时化(实时同步和流式处理能力)
    • 数据虚拟化(虚拟混算和统一服务能力)
    • 数据平民化(可视化和自助配置能力)
    • 数据协作化(多租户和分工协作能力)

    (1)数据实时化(实时同步和流式处理能力)
    数据实时化,是指数据从产生(更新至业务数据库或日志)到最终消费(数据报表、仪表板、分析、挖掘、数据应用等),支持毫秒级/秒级/分钟级延迟(严格来说,秒级/分钟级属于准实时,这里统一称为实时)。这里涉及到如何将数据实时的从数据源中抽取出来;如何实时流转;为了提高时效性,降低端到端延迟,还需要有能力支持在流转过程中进行计算处理;如何实时落库;如何实时提供后续消费使用。实时同步是指多源到多目标的端到端同步,流式处理指在流上进行逻辑转换处理。
    但是我们要知道,不是所有数据处理计算都可以在流上进行,而我们的目的,是尽可能的降低端到端数据延迟,这里就需要和其他数据流转处理方式配合进行,后面我们会进一步讨论。
    (2)数据虚拟化(虚拟混算和统一服务能力)
    数据虚拟化,是指对于用户或用户程序而言,面对的是统一的交互方式和查询语言,而无需关注数据实际所在的物理库和方言及交互方式(异构系统/异构查询语言)的一种技术。用户的使用体验是面对一个单一数据库进行操作,但其实这是一个虚拟化的数据库,数据本身并不存放于虚拟数据库中。
    虚拟混算指的是虚拟化技术可以支持异构系统数据透明混算的能力,统一服务指对于用户提供统一的服务接口和方式。



    图4 数据虚拟化
    注:图1-4均选自“Designing a Modern Data Warehouse + Data Lake” - Melissa Coates, Solution Architect, BlueGranite
    (3)数据平民化(可视化和自助配置能力)
    普通用户(无专业大数据技术背景的数据从业人员),可以通过可视化的用户界面,自助的通过配置和SQL方式使用数据完成自己的工作和需求,并无需关注底层技术层面问题(通过计算资源云化,数据虚拟化等技术)。以上是我们对数据平民化的解读。
    对于Data Democratization的解读,还可以参见以下链接:
    https://www.forbes.com/sites/bernardmarr/2017/07/24/what-is-data-democratization-a-super-simple-explanation-and-the-key-pros-and-cons
    文中提到技术层面如何支持数据平民化,并给出了几个例子:

    • Data virtualization software;
    • Data federation software;
    • Cloud storage;
    • Self-service BI applications等。

    其中数据虚拟化和数据联邦本质上是类似技术方案,并且提到了自助BI这个概念。
    (4)数据协作化(多租户和分工协作能力)
    技术人员应该多了解业务,还是业务人员应该多了解技术?这一直是企业内争论不休的问题。而我们相信现代BI是一个可以深度协作的过程,技术人员和业务人员可以在同一个平台上,发挥各自所长,分工协作完成日常BI活动。这就对平台的多租户能力和分工协作能力提出了较高要求,一个好的现代数据平台是可以支持更好的数据协作化能力的。
    我们希望可以设计出一个现代实时数据平台,满足以上提到的实时化、虚拟化、平民化、协作化等能力,成为现代数仓的一个非常重要且必不可少的组成部分。
    2从典型数据处理角度看实时数据处理
    典型的数据处理,可分为OLTP、OLAP、Streaming、Adhoc、Machine Learning等。这里给出OLTP和OLAP的定义和对比:



    图5
    注:图5选自文章“Relational Databases are not Designed for Mixed Workloads”-Matt Allen
    从某种角度来说,OLTP活动主要发生在业务交易库端,OLAP活动主要发生在数据分析库端。那么,数据是如何从OLTP库流转到OLAP库呢?如果这个数据流转时效性要求很高,传统的T+1批量ETL方式就无法满足了。
    我们将OLTP到OLAP的流转过程叫Data Pipeline(数据处理管道),它是指数据的生产端到消费端之间的所有流转和处理环节,包括了数据抽取、数据同步、流上处理、数据存储、数据查询等。这里可能会发生很复杂的数据处理转换(如重复语义多源异构数据源到统一Star Schema的转换,明细表到汇总表的转换,多实体表联合成宽表等)。如何支持实时性很高的Pipeline处理能力,就成了一个有挑战性的话题,我们将这个话题描述为“在线管道处理”(OLPP, Online Pipeline Processing)问题。
    因此,本文所讨论的实时数据平台,希望可以从数据处理角度解决OLPP问题,成为OLTP到OLAP实时流转缺失的课题的解决方案。下面,我们会探讨从架构层面,如何设计这样一个实时数据平台。
    二、架构设计方案
    1定位和目标
    实时数据平台(Real-time Data Platform,以下简称RTDP),旨在提供数据端到端实时处理能力(毫秒级/秒级/分钟级延迟),可以对接多数据源进行实时数据抽取,可以为多数据应用场景提供实时数据消费。作为现代数仓的一部分,RTDP可以支持实时化、虚拟化、平民化、协作化等能力,让实时数据应用开发门槛更低、迭代更快、质量更好、运行更稳、运维更简、能力更强。
    2整体设计架构
    概念模块架构,是实时数据处理Pipeline的概念层的分层架构和能力梳理,本身是具备通用性和可参考性的,更像是需求模块。图6给出了RTDP的整体概念模块架构,具体每个模块含义都可自解释,这里不再详述。



    图6 RTDP整体概念模块架构
    下面我们会根据上图做进一步设计讨论,给出从技术层面的高阶设计思路。



    图7 整体设计思想
    由图7可以看出,我们针对概念模块架构的四个层面进行了统一化抽象:

    • 统一数据采集平台
    • 统一流式处理平台
    • 统一计算服务平台
    • 统一数据可视化平台

    同时,也对存储层保持了开放的原则,意味着用户可以选择不同的存储层以满足具体项目的需要,而又不破坏整体架构设计,用户甚至可以在Pipeline中同时选择多个异构存储提供支持。下面分别对四个抽象层进行解读。
    (1)统一数据采集平台
    统一数据采集平台,既可以支持不同数据源的全量抽取,也可以支持增强抽取。其中对于业务数据库的增量抽取会选择读取数据库日志,以减少对业务库的读取压力。平台还可以对抽取的数据进行统一处理,然后以统一格式发布到数据总线上。这里我们选择一种自定义的标准化统一消息格式UMS(Unified Message Schema)做为统一数据采集平台和统一流式处理平台之间的数据层面协议。
    UMS自带Namespace信息和Schema信息,这是一种自定位自解释消息协议格式,这样做的好处是:

    • 整个架构无需依赖外部元数据管理平台;
    • 消息和物理媒介解耦(这里物理媒介指如Kafka的Topic, Spark Streaming的Stream等),因此可以通过物理媒介支持多消息流并行,和消息流的自由漂移。
    • 平台也支持多租户体系,和配置化简单处理清洗能力。

    (2)统一流式处理平台
    统一流式处理平台,会消费来自数据总线上的消息,可以支持UMS协议消息,也可以支持普通JSON格式消息。同时,平台还支持以下能力:

    • 支持可视化/配置化/SQL化方式降低流式逻辑开发/部署/管理门槛
    • 支持配置化方式幂等落入多个异构目标库以确保数据的最终一致性
    • 支持多租户体系,做到项目级的计算资源/表资源/用户资源等隔离

    (3)统一计算服务平台
    统一计算服务平台,是一种数据虚拟化/数据联邦的实现。平台对内支持多异构数据源的下推计算和拉取混算,也支持对外的统一服务接口(JDBC/REST)和统一查询语言(SQL)。由于平台可以统一收口服务,因此可以基于平台打造统一元数据管理/数据质量管理/数据安全审计/数据安全策略等模块。平台也支持多租户体系。
    (4)统一数据可视化平台
    统一数据可视化平台,加上多租户和完善的用户体系/权限体系,可以支持跨部门数据从业人员的分工协作能力,让用户在可视化环境下,通过紧密合作的方式,更能发挥各自所长来完成数据平台最后十公里的应用。
    以上是基于整体模块架构之上,进行了统一抽象设计,并开放存储选项以提高灵活性和需求适配性。这样的RTDP平台设计,体现了现代数仓的实时化/虚拟化/平民化/协作化等能力,并且覆盖了端到端的OLPP数据流转链路。
    3具体问题和考量思路
    下面我们会基于RTDP的整体架构设计,分别从不同维度讨论这个设计需要面对的问题考量和解决思路。
    (1)功能考量
    功能考量主要讨论这样一个问题:实时Pipeline能否处理所有ETL复杂逻辑?
    我们知道,对于Storm/Flink这样的流式计算引擎,是按每条处理的;对于Spark Streaming流式计算引擎,按每个mini-batch处理;而对于离线跑批任务来说,是按每天数据进行处理的。因此处理范围是数据的一个维度(范围维度)。
    另外,流式处理面向的是增量数据,如果数据源来自关系型数据库,那么增量数据往往指的是增量变更数据(增删改,revision);相对的批量处理面向的则是快照数据(snapshot)。因此展现形式是数据的另一个维度(变更维度)。
    单条数据的变更维度,是可以投射收敛成单条快照的,因此变更维度可以收敛成范围维度。所以流式处理和批量处理的本质区别在于,面对的数据范围维度的不同,流式处理单位为“有限范围”,批量处理单位为“全表范围”。“全表范围”数据是可以支持各种SQL算子的,而“有限范围”数据只能支持部分SQL算子,具体支持情况如下:
    join:

    • left join:支持。“限制范围”可以left join外部lookup表(通过下推,类似hashjoin效果)
    • right join:不支持。每次从lookup拿回所有lookup表数据,这个计算是不可行的也是不合理的
    • inter join:支持。可以转化为left join +filter,可以支持
    • outer join:不支持。存在right join,因此不合理
    • union:支持。可以应用在拉回局部范围数据做窗口聚合操作。
    • agg:不支持。可以借助union做局部窗口聚合,但无法支持全表聚合操作。
    • filter:支持。没有shuffle,非常适合。
    • map:支持。没有shuffle,非常适合。
    • project:支持。没有shuffle,非常适合。

    Join往往需要shuffle操作,是最费计算资源和时间的操作,而流上join(left join)将join操作转化成hashjoin的队列操作,将批量处理join的集中数据计算资源和时间平摊在数据流转过程中,因此在流上做left join是最划算的计算方式。
    复杂的ETL并不是单一算子,经常会是由多个算子组合而成,由上可以看出单纯的流式处理并不能很好的支持所有ETL复杂逻辑。那么如何在实时Pipeline中支持更多复杂的ETL算子,并且保持时效性?这就需要“有限范围”和“全表范围”处理的相互转换能力。
    设想一下:流式处理平台可以支持流上适合的处理,然后实时落不同的异构库,计算服务平台可以定时批量混算多源异构库(时间设定可以是每隔几分钟或更短),并将每批计算结果发送到数据总线上继续流转,这样流式处理平台和计算服务平台就形成了计算闭环,各自做擅长的算子处理,数据在不同频率触发流转过程中进行各种算子转换,这样的架构模式理论上即可支持所有ETL复杂逻辑。



    图8 数据处理架构演化
    图8给出了数据处理架构的演化,和OLPP的一种架构模式。其中wormhole和moonbox分别是我们开源的流式处理平台和计算服务平台,后面会具体介绍。
    (2)质量考量
    上面的图也引出了两个主流实时数据处理架构:Lambda架构和Kappa架构,具体两个架构的介绍网上有很多资料,这里不再赘述。Lambda架构和Kappa架构各有其优劣势,但都支持数据的最终一致性,从某种程度上确保了数据质量,如何在Lambda架构和Kappa架构中取长补短,形成某种融合架构,这个话题会在新起文章中详细探讨。
    当然数据质量也是个非常大的话题,只支持重跑和回灌并不能完全解决所有数据质量问题,只是从技术架构层面给出了补数据的工程方案。关于大数据数据质量问题,我们也会起一个新的话题讨论。
    (3)稳定考量
    这个话题涉及但不限于以下几点,这里简单给出应对的思路:
    高可用HA
    整个实时Pipeline链路都应该选取高可用组件,确保理论上整体高可用;在数据关键链路上支持数据备份和重演机制;在业务关键链路上支持双跑融合机制
    SLA保障
    在确保集群和实时Pipeline高可用的前提下,支持动态扩容和数据处理流程自动漂移
    弹性反脆弱
    基于规则和算法的资源弹性伸缩;支持事件触发动作引擎的失效处理。
    监控预警
    集群设施层面,物理管道层面,数据逻辑层面的多方面监控预警能力
    自动运维
    能够捕捉并存档缺失数据和处理异常,并具备定期自动重试机制修复问题数据
    上游元数据变更抗性
    上游业务库要求兼容性元数据变更;实时Pipeline处理显式字段。
    (4)成本考量
    这个话题涉及但不限于以下几点,这里简单给出应对的思路:
    人力成本
    通过支持数据应用平民化降低人才人力成本
    资源成本
    通过支持动态资源利用降低静态资源占用造成的资源浪费
    运维成本
    通过支持自动运维/高可用/弹性反脆弱等机制降低运维成本
    试错成本
    通过支持敏捷开发/快速迭代降低试错成本
    (5)敏捷考量
    敏捷大数据是一整套理论体系和方法学,在前文已有所描述,从数据使用角度来看,敏捷考量意味着:配置化、SQL化、平民化。
    (6)管理考量
    数据管理也是一个非常大的话题,这里我们会重点关注两个方面:元数据管理和数据安全管理。如果在现代数仓多数据存储选型的环境下统一管理元数据和数据安全,是一个非常有挑战的话题,我们会在实时Pipeline上各个环节平台分别考虑这两个方面问题并给出内置支持,同时也可以支持对接外部统一的元数据管理平台和统一数据安全策略。
    本文我们探讨了实时数据平台RTDP的相关概念背景和架构设计方案。在架构设计方案中,我们尤其着重讲了RTDP的定位和目标,整体设计架构,以及涉及到的具体问题和考量思路。有些话题很大,可以后续单独形成文章进行专题讨论,但整体上,我们给出了一整套RTDP的设计思路和规划。在下篇技术篇中,我们会将RTDP架构设计具体化落地化,给出推荐的技术选型和我们的开源平台方案,并会结合不同场景需求探讨RTDP的不同模式应用。

    展开全文
  • Python处理缺失数据

    千次阅读 2019-03-22 22:41:48
    缺失原因2  缺失类型3  处理方法3.1  删除3.1.1  统计每列缺失值的个数3.1.2  直接删除含有缺失值的行3.1.3  直接删除含有缺失值的列3.1.4  ...
  • 深度报道:对日软件外包人才缺失 短期难解决(2005.01.10) 来自:ZDNET “NEC集成电路空着一个副总的位置,两年了,找不到合适的人选,他们想让我过去。”北京软件产业促进中心副主任曲玲年曾经做过6年NEC交换机...
  • 解决区块链三大问题的利器

    千次阅读 2016-11-18 13:10:52
    作者:高志豪(weibo.com/elwingao)虽然目前区块链技术发展...但随着各个区块链技术商的深入研究和技术迭代更新,这些问题目前都有了比较不错的解决方案,下面Elwin就給大家介绍一下这些利器。 一、交易性能对于商业应
  • 然而,在XGBoost on Spark的官方实现中,却存在一个因XGBoost缺失值和Spark稀疏表示机制而带来的不稳定问题。 事情起源于美团内部某机器学习平台使用方同学的反馈,在该平台上训练出的XGBoost模型,使用同一个模型、...
  • 解决了什么问题 它如何解决 相应的解决工具 协调和服务发现 (Coordination &Service Discovery ) 是什么 解决了什么问题 它如何解决 备注: 相应的解决工具 远程过程调用(RPC) 是什么 解决了什么...
  • 分类中解决类别不平衡问题

    万次阅读 多人点赞 2018-05-11 22:19:31
    为了克服随机欠采样方法导致的信息缺失问题,又要保证算法表现出较好的不均衡数据分类性能,出现了欠采样法代表性的算法EasyEnsemble和BalanceCascade算法。 (3)欠采样代表性算法-EasyEnsemble 算法步骤: 1)从多数...
  • 数据预处理_缺失值处理

    千次阅读 2019-07-01 23:05:55
    缺失值是指粗糙数据中由于缺少信息而造成的数据的聚类、分组、删失或截断。它指的是现有数据集中某个或某些属性的值是不完全的。缺失值的产生的原因多种多样,主要分为机械原因和人为原因。 机械原因是由于机械原因...
  • 缺失值处理

    千次阅读 2019-03-09 15:38:18
    随机缺失可以通过已知变量对缺失值进行估计,而非随机缺失的非随机性还没有很好的解决办法。   3 数据缺失的处理方法   重点来了,对于各种类型数据的缺失,我们到底要如何处理呢?以下是处理缺失值的...
  • 文章目录报错和解决方法错误一:无法打开键:xxx错误二:代号1311错误类型,一些文件缺失错误三:安装文件损坏总结 报错和解决方法   之前安装过一次Acrobat,之前的Acrobat文件没有卸载干净,从某宝上面购买的...
  • 在安卓开发中,开发人员和测试人员的配合默契程度直接会导致产品上线是否合格、是否会出现严重的项目崩溃、是否会出现产品功能的缺失,这些都和...人员沟通测试的边际和测试人员设计的测试用例是否存在功能缺失问题...
  • 最全整理浏览器兼容性问题解决方案

    万次阅读 多人点赞 2018-02-26 11:44:36
    常见浏览器兼容性问题解决方案 所谓的浏览器...所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决问题。 在学习浏览器兼容性之前,我想把前端开发人员划分为两类: 第一类是精确按照设计图开发的...
  • JWT token 实践问题解决

    千次阅读 2021-01-02 00:04:49
    本章主要讲述在使用 JWT token 过程中遇到的问题以及解决方案。 token 是什么?token 是用户登录的时候颁发的。 改造场景:内网有一些接口是通过token 来获取用户信息,这个是不合理的。 我的理解: token 是用来...
  • 主流浏览器兼容性问题解决方案

    千次阅读 2018-11-12 14:23:11
    主流浏览器兼容性问题解决方案  所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况。在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站...
  • 前端浏览器兼容性问题解决办法

    万次阅读 多人点赞 2019-06-11 14:18:22
    所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决问题。 浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同 问题症状:随便写几个标签,不加样式控制的情况下,各自的marg...
  • 缺失值的处理方法大总结

    千次阅读 2019-10-16 14:16:45
    缺失的原因二.数据缺失的类型三.缺失值的处理方法1. 删除dropna()缺点2.填补替换缺失值均值填充热卡填补K均值拟合缺失值回归预测极大似然估计多重插补随即森林虚拟变量3.不处理四.总结五.参考资料 一.缺失的原因 ...
  • 1 数据缺失的原因 2 数据缺失的类型 3 数据缺失的处理方法 1. 删除记录 2. 数据填补 3. 不处理 4 总结 1 数据缺失的原因 首先我们应该知道:数据为什么缺失?数据的缺失是我们无法避免的,可能的原因有很...
  • Python数据分析基础: 数据缺失值处理

    千次阅读 2020-10-31 21:56:01
    本篇开始分享如何使用Python进行数据分析,主要侧重介绍一些分析的方法和技巧,而对于pandas和numpy等Pyhon计算包的使用会在问题中提及,但不详细介绍。本篇我们来说说面对数据的缺失值,我们该如何处理。文末有.
  • 软件测试中的问题解决

    千次阅读 2018-06-27 17:22:26
    原文出处:...Ajay Balamurugads叙述了自己与一个同事关于在软件测试中的测试用例问题以及他从问题解决过程中学到的经验。现在来看看你应该考虑的...
  • 常见浏览器兼容性问题解决方案  所谓的浏览器兼容性...所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决问题。  在学习浏览器兼容性之前,我想把前端开发人员划分为两类:  第一类是精确按照...
  • 十步法原则解决数据质量问题

    千次阅读 2019-08-21 14:06:38
    在源头建立数据标准或接入标准,规范数据定义,在数据流转过程中建立监控数据转换质量的流程和体系,尽量做到在哪发现问题就在哪解决问题,不把问题数据带到后端。 5)质量报告 系统提供了丰富的API可进行定制化...
  • 每一次客诉、系统抖动等都是对技术人员的重大考验,我们必须立即响应,快速解决问题。 如何提高排查问题的效率呢?最有效的方式是通过分析系统日志。如果系统日志全面,会为我们排查解决线上问题带来绝大的帮助,...
  • Microsoft DirectX 8 开发人员常见问题

    千次阅读 2006-04-29 11:26:00
    Microsoft DirectX 8 开发人员常见问题: Microsoft DirectX 8 开发人员常见问题 摘要:本文对与 Microsoft DirectX 8.0 版有关的常见开发问题进行解答,其中包括有关 Direct3D、DirectSound 和 DirectPlay 的章节。...
  • 由于是问题解决后写的本文档,所以有些没有截图 由研发人员说服务器无法登陆,尝试ssh连接一致提示密码错误,沟通后通过vcenter进行密码重置 通过vcenter打开机器的控制台发现机器在用户登陆界面,输入密码后 提示...
  • iOS审核被拒常见问题解决方案

    千次阅读 2020-04-10 10:00:29
    关于2.1,也有下面这样的问题描述 Guideline 2.1 - Information Needed We’re looking forward to continuing our review, but we need a bit more information about your business model and your users to help...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,059
精华内容 11,223
关键字:

如何解决人员缺失问题