数据仓库-易错点

转自:博客园-liuweiqiang2v


最近在搞关于数据分析的项目,做了一点总结。

下图是系统的数据流向。
容易出现错误的地方。

1、数据进入hadoop仓库
有四种来源,这四种是最基本的数据,简称ods,original data source,后续 的数据都是有这些组合而来
a、日志文件
b、http接口
c、DB查询
d、建表指向
最后数据都是以hadoop文件的形式存放在hadoop中。

日志文件:

  • 新增机器没有通知数据分析组抓日志
  • 根据约定获取日志是遇到错误,例如:约定获取gz的压缩日志,结果没有
  • 数据提供方rsync日志出现问题

http接口:

  • 接口不稳定,经常500
  • 接口提供的数据本来就是错误的

DB:

  • 数据结构的变化没有及时通知数据分析组

建表指向:

  • 过了约定的时间,还没有提供

2、hadoop文件
hadoop.apache.org

3、hive
参考资料hive.apache.org
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
通过建立hive表,将数据load进入hive表。

drop table if exists rpt_crm_cube_kpi_reserve_room_gb_seq;
create external table rpt_crm_cube_kpi_reserve_room_gb_seq (
    report_date string,
    area_name string,
    manager_name string,
    manager_user_id string,
    assistant_name string,
    hotel_seq string,
    hotel_name string,
    hotel_grade string,
    tree_code string,
    city_name string,
    confirmed bigint,
    reserve_room bigint,
    instant_confirmed bigint
) partitioned by (dt string)
*ROW FORMAT DELIMITED*
*  FIELDS TERMINATED BY '\001'*
*  COLLECTION ITEMS TERMINATED BY '\002'*
*  MAP KEYS TERMINATED BY '\003'*
*  LINES TERMINATED BY '\n'*
*STORED AS INPUTFORMAT*
*  'com.hadoop.mapred.DeprecatedLzoTextInputFormat'*
*OUTPUTFORMAT*
*  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'*
location '/user/qhstats/rpt/rpt_crm_cube_kpi_reserve_room_gb_seq';
*  *标记的地方为约定好的,不能出错,否则数据载入就会出错 *
    insert overwrite table rpt_crm_cube_kpi_gb_sales partition (dt = '$DATE', kpi = 'all_lose')
    select
        3 as target_id,
        peer.report_date,
        peer.area_name,
        peer.tree_code,
        peer.manager_name,
        peer.manager_user_id,
        peer.object,
        peer.completed,
        rank()   over (partition by peer.tree_code order by if(peer.object = 0, -1, 1 - peer.completed * 1.0 / peer.object) desc) as peer_rank,
        count(1) over (partition by peer.tree_code) as peer_count,
        parent.peer_rank  as parent_rank,
        parent.peer_count as parent_count
    from (
        select
            report_date,
            area_name,
            manager_name,
            manager_user_id,
            tree_code,
            sum(1) as object,
            sum(if(is_lose = 1, 0, 1)) as completed
        from
            rpt_crm_cube_kpi_lose_gb_seq
        where
            dt = '$DATE' and type='ALL'
        group by report_date, area_name, manager_name, manager_user_id, tree_code
    ) peer
    inner join (
        select
            *
        from
            rpt_crm_cube_kpi_gb_tree_code
        where
            dt = '$DATE' and kpi = 'all_lose'
    ) parent
    on peer.tree_code = parent.tree_code;

EOF
}

容易出错的地方:

  • 列的数据类型需要明确,否则有字符串到hive表转换的时候会发生错误。例如在文件里边是 ‘xiaoqiang’,列类型却设置为bigint,最后数据会为null。

4、hive表导入到DB

hive的数据可以导入到DB

function export_to_crm_cube {
    $HIVE -e "select * from rpt_crm_cube_kpi_gb_sales where dt = '$DATE' and kpi = 'all_lose' " > $TMP_FILE

    $crm_cube_DEV_STR << EOF
    delete from crm_cube_kpi_gb_sales where report_date = '$FORMAT_DATE' and target_id = 3;

    load data local infile '$TMP_FILE'
    into table crm_cube_kpi_gb_sales (
        target_id,
        report_date,
        area,
        tree_code,
        manager_name,
        manager_user_id,
        object_cnt,
        completed_cnt,
        peer_rank,
        peer_cnt,
        parent_rank,
        parent_cnt
    );

EOF
}

容易出错的地方:

  • 数据类型的转换,数据分析组统计有50%多的概率出现数据类型转换的问题

5、DB到app

DB到App中,数据已经固化在DB了,剩下的就是把数据呈献给用户,这时候数据的准确性就需要保证了。

数据的准确性保证需要依赖一下几点:

取数的正确性,从那些地方取数据。
数据逻辑的正确性,产品提供的数据逻辑是否正确。
数据的准确性,数据逻辑翻译为代码是否正确
前端的呈现,数据都吐正确了,前端是否正确的展现给用户。

 

总结了数据从hadoop到用户过程中,如意出错的地方,知道那可以出错了,就知道该怎么应对了。

智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值