范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

从0到1之spark(32)大数据项目电商数仓(二)系统业务数据仓库

  2.4 关系建模与维度建模
  关系模型
  关系模型主要应用与OLTP系统中,为了保证数据的一致性以及避免冗余,所以大部分业务系统的表都是遵循第三范式的。
  维度模型
  维度模型主要应用于OLAP系统中,因为关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率。
  所以把相关各种表整理成两种:事实表和维度表两种。所有维度表围绕着事实表进行解释。
  OLAP与OLTP对比
  雪花模型、星型模型和星座模型
  在维度建模的基础上又分为三种模型:星型模型、雪花模型、星座模型
  第3章 数仓搭建
  3.0 配置Hadoop支持Snappy压缩
  1)将编译后支持Snappy压缩的Hadoop jar包解压缩,并将lib/native目录中所有文件上传到hadoop102的/opt/module/hadoop-2.7.2/lib/native目录,并分发到hadoop103 hadoop104。
  2)重新启动Hadoop。
  3)检查支持的压缩方式 [kgg@hadoop102 native]$ hadoop checknative hadoop:  true /opt/module/hadoop-2.7.2/lib/native/libhadoop.so zlib:    true /lib64/libz.so.1 snappy:  true /opt/module/hadoop-2.7.2/lib/native/libsnappy.so.1 lz4:     true revision:99 bzip2:   false
  3.1 业务数据生成
  3.1.1 建表语句
  1)通过SQLyog创建数据库gmall
  2)设置数据库编码
  3)导入建表语句(1建表脚本)
  4)重复步骤3的导入方式,依次导入:2商品分类数据插入脚本、3函数脚本、4存储过程脚本。
  3.1.2 生成业务数据
  1)生成业务数据函数说明     init_data ( do_date_string VARCHAR(20) , order_incr_num INT, user_incr_num INT , sku_num INT , if_truncate BOOLEAN  ):     参数一:do_date_string生成数据日期     参数二:order_incr_num订单id个数     参数三:user_incr_num用户id个数     参数四:sku_num商品sku个数     参数五:if_truncate是否删除数据
  2)案例测试:
  (1)需求:生成日期2019年2月10日数据、订单1000个、用户200个、商品sku300个、删除原始数据。
  CALL init_data("2019-02-10",1000,200,300,TRUE);
  (2)查询生成数据结果 SELECT * from base_category1; SELECT * from base_category2; SELECT * from base_category3;  SELECT * from order_info; SELECT * from order_detail;  SELECT * from sku_info; SELECT * from user_info;  SELECT * from payment_info;
  3.2 业务数据导入数仓
  3.2.1 Sqoop安装
  详见尚硅谷大数据技术之Sqoop
  3.2.2 Sqoop导入命令 /opt/module/sqoop/bin/sqoop import  --connect  --username  --password  --target-dir  --delete-target-dir  --num-mappers  --fields-terminated-by  --query "$2" " and $CONDITIONS;"
  3.2.3 分析表
  3.2.4 Sqoop定时导入脚本
  1)在/home/kgg/bin目录下创建脚本sqoop_import.sh
  [kgg@hadoop102 bin]$ vim sqoop_import.sh     在脚本中填写如下内容 #!/bin/bash  db_date=$2 echo $db_date db_name=gmall  import_data() { /opt/module/sqoop/bin/sqoop import  --connect jdbc:mysql://hadoop102:3306/$db_name  --username root  --password 000000  --target-dir /origin_data/$db_name/db/$1/$db_date  --delete-target-dir  --num-mappers 1  --fields-terminated-by "	"  --query "$2"" and $CONDITIONS;" }  import_sku_info(){   import_data "sku_info" "select  id, spu_id, price, sku_name, sku_desc, weight, tm_id, category3_id, create_time   from sku_info where 1=1" }  import_user_info(){   import_data "user_info" "select  id, name, birthday, gender, email, user_level,  create_time  from user_info where 1=1" }  import_base_category1(){   import_data "base_category1" "select  id, name from base_category1 where 1=1" }  import_base_category2(){   import_data "base_category2" "select  id, name, category1_id from base_category2 where 1=1" }  import_base_category3(){   import_data "base_category3" "select id, name, category2_id from base_category3 where 1=1" }  import_order_detail(){   import_data   "order_detail"   "select      od.id,      order_id,      user_id,      sku_id,      sku_name,      order_price,      sku_num,      o.create_time     from order_info o, order_detail od   where o.id=od.order_id   and DATE_FORMAT(create_time,"%Y-%m-%d")="$db_date"" }  import_payment_info(){   import_data "payment_info"   "select      id,       out_trade_no,      order_id,      user_id,      alipay_trade_no,      total_amount,       subject,      payment_type,      payment_time    from payment_info    where DATE_FORMAT(payment_time,"%Y-%m-%d")="$db_date"" }  import_order_info(){   import_data   "order_info"   "select      id,      total_amount,      order_status,      user_id,      payment_way,      out_trade_no,      create_time,      operate_time     from order_info    where (DATE_FORMAT(create_time,"%Y-%m-%d")="$db_date" or DATE_FORMAT(operate_time,"%Y-%m-%d")="$db_date")" }  case $1 in   "base_category1")      import_base_category1 ;;   "base_category2")      import_base_category2 ;;   "base_category3")      import_base_category3 ;;   "order_info")      import_order_info ;;   "order_detail")      import_order_detail ;;   "sku_info")      import_sku_info ;;   "user_info")      import_user_info ;;   "payment_info")      import_payment_info ;;    "all")    import_base_category1    import_base_category2    import_base_category3    import_order_info    import_order_detail    import_sku_info    import_user_info    import_payment_info ;; esac
  2)增加脚本执行权限 [kgg@hadoop102 bin]$ chmod 777 sqoop_import.sh
  3)执行脚本导入数据 [kgg@hadoop102 bin]$ sqoop_import.sh all 2019-02-10
  4)在SQLyog中生成2019年2月11日数据 CALL init_data("2019-02-11",1000,200,300,TRUE);
  5)执行脚本导入数据 [kgg@hadoop102 bin]$ sqoop_import.sh all 2019-02-11
  3.2.5 Sqoop导入数据异常处理
  1)问题描述:执行Sqoop导入数据脚本时,发生如下异常 java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@65d6b83b is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:930)     at com.mysql.jdbc.MysqlIO.checkForOutstandingStreamingData(MysqlIO.java:2646)     at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1861)     at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)     at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)     at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2477)     at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1422)     at com.mysql.jdbc.ConnectionImpl.getMaxBytesPerChar(ConnectionImpl.java:2945)     at com.mysql.jdbc.Field.getMaxBytesPerCharacter(Field.java:582)
  2)问题解决方案:增加如下导入参数 java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@65d6b83b is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:930)     at com.mysql.jdbc.MysqlIO.checkForOutstandingStreamingData(MysqlIO.java:2646)     at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1861)     at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)     at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)     at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2477)     at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1422)     at com.mysql.jdbc.ConnectionImpl.getMaxBytesPerChar(ConnectionImpl.java:2945)     at com.mysql.jdbc.Field.getMaxBytesPerCharacter(Field.java:582)

首发骁龙855Plus处理器花落ROG手机联手腾讯探索120Hz刷新率高通今晚正式发布骁龙855Plus处理器,华硕将会首发搭载骁龙855plus的ROG游戏手机2,成为首家使用骁龙855Plus芯片的厂商。经查,ROG玩家国度官微也确认,定于7月2小米MIX4发布,能否接力华为成国产高端智能机下一个王牌5G时代,万物互联,移动通信进入一个全新的阶段,华为荣耀小米苹果上演智能手机高端市场的大乱斗。美国三轮制裁,使华为芯片存量持续下滑,苹果趁势回归智能机市场的主导,而国产智能机的竞争三星S21U年度安卓机皇发布日前,三星正式发布了新一代旗舰机GalaxyS21系列,这也是近年来问世最早的S系列旗舰,共有GalaxyS21GalaxyS21Plus及GalaxyS21Ultra三款,不仅部小米11正式发布,3999起送充电器?20201228晚19点30分,小米11终于发布了,虽说充电和拍照方面没有太大提升,但是仅凭首发骁龙8883999RMB这一点,毫无疑问又会成为一款热门手机外观屏幕首先是外观方面,小米发布会全面总结,MIX4小米平板5都在这了话不多说,发布会太长,前言就不多说废话了小米MIX4屏幕方面,小米MIX4采用了一块6。67英寸OLED柔性屏,供应商依旧为合作伙伴华星光电。分辨率24001080,120Hz刷新华为P50系列正式发布,全系标配4G7月30日晚730,华为正式在线上发布了P50系列,这不仅是P系列的新旗舰,也是一款命运多舛的国产旗舰机。屏幕外观这次华为发布了两款机型华为P50和P50Pro。华为P50采用了6iPhone12系列发布会卖了一个月的关子,苹果终于把iPhone12系列抬出来了。虽然已经被曝光得底裤都不剩,四款型号外观颜色配置基本都能对上。不卖关子,直接进入今天的四款新iPhone,第一款iPhon房地产税重磅!全国人大常委会授权国务院在部分地区开展改革试点新华社10月23日消息,为积极稳妥推进房地产税立法与改革,引导住房合理消费和土地资源节约集约利用,促进房地产市场平稳健康发展,第十三届全国人民代表大会常务委员会第三十一次会议决定授5个让人惊艳的先进物品!深扒那些让人惊艳的宝藏好物现在都在追求精致生活,很多物品已经渐渐被淘汰了,特别是网上,有很多网红开始吹嘘各种网红用品,刚开始抱着试一试的态度,也没饱多大希望!5个让人惊艳的先进物品!深扒那些让人惊艳的宝藏好太惊艳了?古装剧嘉南传开播,这一次能够养养眼了古装剧嘉南传开播受关注,古风作品的魅力到底是有多大?在最近,下半年中备受观众期待的古装剧嘉南传终于可以和大家见面了。对于这部剧的粉丝而言,可谓是期待了许久,因为从之前官方放出的宣传V社砍掉的太空游戏StarsofBlood概念图最新曝光此前据说是V社参与开发的一款全新的太空海岛游戏被腰斩,最近这款被取消开发的游戏StarsofBlood曝光了最新的概念图,可以看到游戏中的人设和环境等要素内容,一起来看看详情吧!根
反诈警官老陈微信被封?腾讯回应多人举报触发安全策略最近,反诈警官老陈突然火了,因为在短视频平台连线各种主播诞生了一系列爆笑名场面,其推广的国家反诈中心APP登顶苹果商店免费应用下载榜单。然而随后,老陈的微信账号突然被封,据中国新闻阿里员工性侵原来是冤案一个年过半百的老师,半个世纪的人生经历,给你不同的新世界,这里干货满满。最新消息,轰轰烈烈的阿里女性员工被强制猥亵是冤案,有错却没有罪。官方称,犯罪嫌疑人王某文实施的强制猥亵行为不中国成功拿下6G专利,比5G速度快50倍,西方各国羡慕不已为了改变全球通信体系格局,也为了改变全球通讯标准,中国又一次惊艳了全世界。据熟悉,截至到目前,中国已经成功的拿下了关于6G项目的多项专利,这引得不少西方国家羡慕不已。可能很多人会觉iPhoneSE3新款渲染图5。5寸无刘海屏后置双摄,苹果性价比之王多方消息显示,苹果即将在9月14日正式发布新款iPhone13系列,不过iPhone13系列只是小幅升级款,相比iPhone12系列的升级其实并不算很大。最大的亮点在于支持120H任正非的格局有多大?任正非就是一个没有自己的人,他的心中只有天下。当孟满洲被抓以后,美国曾经找华为谈判,只要你交出五g技术,你女儿给你放回来。任正非当时说了一句话,以为抓我们家一个人。我们就降了。太小华为没有放弃!9月将发布新手机,余承东发声好久不见华为没有放弃手机业务。9月6日上午,华为手机官微发布消息称,华为nova9系列手机将于9月23日上市。华为常务董事消费者业务CEO余承东也发文称好久不见。搭载HarmonyOS2系多年痛点有望根治!iPhone13这一点,让我对它彻底改观2015年4月,首款采用了双曲面设计的三星GalaxyS6edge用来靓丽的屏幕曲线让沉闷的国产手机市场大开眼界。随后的GalaxyS7更是先开了Android旗舰手机必须采用曲面滴滴断臂自救,橙心优选被弃,拼客顺风车异军突起?关注作者,获取最新资讯自从7月9日滴滴出行被下架,网约车领域一家独大的局面就被打破了。至今已经两个月了,滴滴丝毫不见复活的踪迹。反倒是旗下的橙心优选,最近爆出了裁员严重,研发岗只剩阿里女员工事件大反转,大众的同情心又一次被滥用了吗?1hr一个月前(2021年8月7日),著名互联网公司阿里巴巴的女员工,在网上发表了一篇约8000字的长文,在文中极力控诉她被其领导(王某文)在出差途中灌醉性侵。阿里巴巴女员工的原文阿里女员工被性侵案,男领导不构成犯罪打了谁的脸?男领导不构成犯罪就反转了?女下属就被打脸钉在耻辱柱了?不要误读了法律和事实。检察院通报警方通报关于阿里员工涉嫌性侵一案,济南警方和检方再次通报,阿里女员工案涉事男领导不构成犯罪,不京东还需要多久才能全面超过阿里巴巴?京东这么恶心,以前我只用京东的,现在已经卸载了因为太坑了,又用回天猫了。想超过阿里,别做梦了。就算是侥幸超过阿里了,我和我家人及朋友们,也都抵制京东,京东太恶心了。京东是一家很优秀