用户画像第二章(企业级360°用户画像_数据调研及ETL)
第二部分:业务数据调研及ETL
整个用户画像(UserProfile)项目中,数据、业务及技术流程图如下所示:
其中数据源存储在业务系统数据库:MySQL 数据库中,采用SQOOP全量/增量将数据抽取到HDFS(Hive表中),通过转换为HFile文件加载到HBase表。
1)、编写MapReduce程序
2)、编写Spark程序(推荐时用Spark编程)
1)、为什么将订单相关数据【订单数据和订单商品数据】存储到HBase表中????
特点:数据量比较大
存储HBase:存储海量数据、查询检索
2)、实际项目来说【访问行为日志】数据存储到Hive表中
数据仓库分层:
ODS层、DW层和APP层
3)、特殊:模拟的所有业务数据存储在RDBMs表中,为了简化整个项目开发,重点在于标签开发,将所有数据迁移到HBase表中。
1、电商数据(数据源)
所有的业务数据,都是编写程序模拟产生的,直接保存到MySQL数据库的表中。
1.1、MySQL数据库
在数据库【tags_dat
】中包含四张表:
1)、订单商品表:tbl_goods
2)、用户表:tbl_users
3)、行为日志表:tbl_logs
4)、订单数据表:tbl_orders
1.2、表的结构
电商系统中四张表的结构如下,数据存储在MySQL数据库中(为了方便模拟业务数据,存储MySQL表)。
1.2.1、数据库Database
数据库**tags_dat
,构建语句如下:
1.2.2、订单商品信息表:tbl_goods
电商网站中订单商品goods**基本信息表,总共97个字段,除去主键ID外96个字段。
CREATE TABLE `tbl_goods` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`siteId` int(10) unsigned NOT NULL,`isTest` tinyint(1) unsigned NOT NULL COMMENT '是否是测试网单',`hasRead` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已读,测试字段',`supportOneDayLimit` tinyint(1) unsigned NOT NULL COMMENT '是否支持24小时限时达',`orderId` int(10) unsigned NOT NULL,`cOrderSn` varchar(50) NOT NULL COMMENT 'child order sn 子订单编码 C0919293',`isBook` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否是预订网单',`cPaymentStatus` smallint(3) unsigned NOT NULL COMMENT '子订单付款状态',`cPayTime` int(10) unsigned NOT NULL COMMENT '子订单付款时间',`productType` varchar(50) NOT NULL COMMENT '商品类型',`productId` int(10) unsigned NOT NULL COMMENT '抽象商品id(可能是商品规格,也可能是套装,由商品类型决定)',`productName` varchar(100) NOT NULL COMMENT '商品名称:可能是商品名称加颜色规格,也可能是套装名称',`sku` varchar(60) NOT NULL COMMENT '货号',`price` decimal(10,2) unsigned NOT NULL COMMENT '商品单价',`number` smallint(5) unsigned NOT NULL COMMENT '数量',`lockedNumber` int(10) unsigned NOT NULL COMMENT '曾经锁定的库存数量',`unlockedNumber` int(10) unsigned NOT NULL COMMENT '曾经解锁的库存数量',`productAmount` decimal(10,2) NOT NULL COMMENT '此字段专为同步外部订单而加,商品总金额=price*number+shippingFee-优惠金额,但优惠金额没在本系统存储',`balanceAmount` decimal(10,2) unsigned NOT NULL COMMENT '余额扣减',`couponAmount` decimal(10,2) unsigned NOT NULL COMMENT '优惠券抵扣金额',`esAmount` decimal(10,2) unsigned NOT NULL COMMENT '节能补贴金额',`giftCardNumberId` int(10) unsigned NOT NULL COMMENT '礼品卡号ID,关联GiftCardNumbers表的主键',`usedGiftCardAmount` decimal(10,2) unsigned NOT NULL COMMENT '礼品卡抵用的金额',`couponLogId` int(10) unsigned NOT NULL COMMENT '使用的优惠券记录ID',`activityPrice` decimal(10,2) unsigned NOT NULL COMMENT '活动价,当有活动价时price的值来源于activityPrice',`activityId` int(10) unsigned NOT NULL COMMENT '活动ID',`cateId` int(11) NOT NULL COMMENT '分类ID',`brandId` int(11) NOT NULL COMMENT '品牌ID',`netPointId` int(10) NOT NULL COMMENT '网点id',`shippingFee` decimal(10,2) NOT NULL COMMENT '配送费用',`settlementStatus` tinyint(1) NOT NULL COMMENT '结算状态0 未结算 1已结算 ',`receiptOrRejectTime` int(10) unsigned NOT NULL COMMENT '确认收货时间或拒绝收货时间',`isWmsSku` tinyint(1) NOT NULL COMMENT '是否淘宝小家电',`sCode` varchar(10) NOT NULL COMMENT '库位编码',`tsCode` varchar(10) NOT NULL DEFAULT '' COMMENT '转运库房编码',`tsShippingTime` int(11) NOT NULL DEFAULT '0' COMMENT '转运时效(小时)',`status` smallint(3) NOT NULL COMMENT '状态',`productSn` varchar(60) NOT NULL COMMENT '商品条形码',`invoiceNumber` varchar(60) NOT NULL COMMENT '运单号',`expressName` varchar(255) NOT NULL COMMENT '快递公司',`invoiceExpressNumber` varchar(60) NOT NULL COMMENT '发票快递单号',`postMan` varchar(20) NOT NULL COMMENT '送货人',`postManPhone` varchar(15) NOT NULL COMMENT '送货人电话',`isNotice` smallint(5) NOT NULL COMMENT '是否开启预警',`noticeType` smallint(5) NOT NULL,`noticeRemark` varchar(255) NOT NULL,`noticeTime` varchar(8) NOT NULL COMMENT '预警时间',`shippingTime` int(10) NOT NULL COMMENT '发货时间',`lessOrderSn` varchar(50) NOT NULL COMMENT 'less 订单号',`waitGetLesShippingInfo` tinyint(1) unsigned NOT NULL COMMENT '是否等待获取LES物流配送节点信息',`getLesShippingCount` int(10) unsigned NOT NULL COMMENT '已获取LES配送节点信息的次数',`outping` varchar(20) NOT NULL COMMENT '出库凭证',`lessShipTime` int(10) NOT NULL COMMENT 'less出库时间',`closeTime` int(10) unsigned NOT NULL COMMENT '网单完成关闭或取消关闭时间',`isReceipt` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '是否需要发票',`isMakeReceipt` int(1) NOT NULL DEFAULT '1' COMMENT '开票状态',`receiptNum` text NOT NULL COMMENT '发票号',`receiptAddTime` varchar(30) NOT NULL COMMENT '开票时间',`makeReceiptType` tinyint(3) NOT NULL COMMENT '开票类型 0 初始值 1 库房开票 2 共享开票',`shippingMode` varchar(60) NOT NULL COMMENT '物流模式,值为B2B2C或B2C',`lastTimeForShippingMode` int(10) unsigned NOT NULL COMMENT '最后修改物流模式的时间',`lastEditorForShippingMode` varchar(200) NOT NULL COMMENT '最后修改物流模式的管理员',`systemRemark` text NOT NULL COMMENT '系统备注,不给用户显示',`tongshuaiWorkId` int(11) NOT NULL DEFAULT '-1' COMMENT '统帅定制作品ID',`orderPromotionId` int(10) unsigned NOT NULL COMMENT '下单立减活动ID',`orderPromotionAmount` decimal(10,2) unsigned NOT NULL COMMENT '下单立减金额',`externalSaleSettingId` int(10) unsigned NOT NULL COMMENT '淘宝套装设置ID',`recommendationId` int(10) unsigned NOT NULL COMMENT '推荐购买ID',`hasSendAlertNum` tinyint(1) unsigned NOT NULL COMMENT '是否已发送了购买数据报警邮件(短信)',`isNoLimitStockProduct` tinyint(1) unsigned NOT NULL COMMENT '是否是无限制库存量的商品',`hpRegisterDate` int(11) DEFAULT '0' COMMENT 'HP注册时间',`hpFailDate` int(11) DEFAULT '0' COMMENT 'HP派工失败时间',`hpFinishDate` int(11) DEFAULT '0' COMMENT 'HP派工成功时间',`hpReservationDate` int(11) NOT NULL DEFAULT '0' COMMENT 'HP回传预约送货时间',`shippingOpporunity` tinyint(4) NOT NULL DEFAULT '0' COMMENT '活动订单发货时机,0定金发货 1尾款发货',`isTimeoutFree` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否超时免单 0未设置 1是 2否',`itemShareAmount` decimal(10,2) DEFAULT '0.00' COMMENT '订单优惠价格分摊',`lessShipTInTime` int(10) DEFAULT '0' COMMENT 'less转运入库时间',`lessShipTOutTime` int(10) DEFAULT '0' COMMENT 'less转运出库时间',`cbsSecCode` varchar(10) DEFAULT '' COMMENT 'cbs库位',`points` int(11) DEFAULT '0' COMMENT '网单使用积分',`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',`splitFlag` tinyint(3) unsigned NOT NULL COMMENT '拆单标志,0:未拆单;1:拆单后旧单;2:拆单后新单',`splitRelateCOrderSn` varchar(50) NOT NULL COMMENT '拆单关联单号',`channelId` tinyint(4) DEFAULT '0' COMMENT '区分EP和商城',`activityId2` int(11) NOT NULL DEFAULT '0' COMMENT '运营活动id',`pdOrderStatus` int(4) NOT NULL DEFAULT '0' COMMENT '日日单状态',`omsOrderSn` varchar(20) NOT NULL DEFAULT '' COMMENT '集团OMS单号',`couponCode` varchar(20) NOT NULL DEFAULT '' COMMENT '优惠码编码',`couponCodeValue` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '优惠码优惠金额',`storeId` int(10) unsigned NOT NULL DEFAULT '0',`storeType` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '店铺类型',`stockType` varchar(10) NOT NULL DEFAULT 'WA',`o2oType` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT 'o2o网单类型1非O2O网单2线下用户分销商城3商城分销旗舰店4创客',`brokerageType` varchar(100) DEFAULT NULL,`ogColor` varchar(30) DEFAULT NULL COMMENT '算法预留字段',PRIMARY KEY (`id`),KEY `orderId` (`orderId`),KEY `sCode` (`sCode`),KEY `cOrderSn` (`cOrderSn`),KEY `netPointId` (`netPointId`),KEY `isNotice` (`isNotice`),KEY `noticeTime` (`noticeTime`),KEY `closeTime` (`closeTime`),KEY `cPayTime` (`cPayTime`),KEY `productId` (`productId`),KEY `activityId` (`activityId`),KEY `idx_OrderProducts_cPaymentStatus_status` (`cPaymentStatus`,`status`),KEY `idx_OrderProducts_waitGetLesShippingInfo` (`waitGetLesShippingInfo`),KEY `idx_OrderProducts_status` (`status`),KEY `idx_OrderProducts_sku` (`sku`),KEY `ix_OrderProducts_lessShipTime` (`lessShipTime`),KEY `modified` (`modified`),KEY `ix_OrderProducts_receiptAddTime` (`receiptAddTime`),KEY `idx_pdOrderStatus` (`pdOrderStatus`),KEY `idx_lessShipTInTime` (`lessShipTInTime`)
) ENGINE=InnoDB AUTO_INCREMENT=3853572 DEFAULT CHARSET=utf8;
1.2.3、会员信息表:tbl_users
电商网站中用户基本信息表,总共38个字段,除去主键ID外共37个字段信息。
CREATE TABLE `tbl_users` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`siteId` int(10) unsigned NOT NULL,`avatarImageFileId` varchar(255) DEFAULT NULL,`email` varchar(120) DEFAULT NULL,`username` varchar(60) NOT NULL COMMENT '用户名',`password` varchar(32) DEFAULT NULL COMMENT '密码',`salt` varchar(10) DEFAULT NULL COMMENT '扰码',`registerTime` int(10) unsigned NOT NULL COMMENT '注册时间',`lastLoginTime` int(10) unsigned DEFAULT NULL COMMENT '最后登录时间',`lastLoginIp` varchar(15) DEFAULT NULL COMMENT '最后登录ip',`memberRankId` int(10) unsigned DEFAULT NULL COMMENT '特殊会员等级id,0表示非特殊会员等级',`bigCustomerId` int(10) unsigned DEFAULT NULL COMMENT '所属的大客户ID',`lastAddressId` int(10) unsigned DEFAULT NULL COMMENT '上次使用的收货地址',`lastPaymentCode` varchar(20) DEFAULT NULL COMMENT '上次使用的支付方式',`gender` tinyint(3) unsigned DEFAULT NULL COMMENT '性别:0保密1男2女',`birthday` date DEFAULT NULL COMMENT '生日',`qq` varchar(20) DEFAULT NULL,`job` varchar(60) DEFAULT NULL COMMENT '职业;1学生、2公务员、3军人、4警察、5教师、6白领',`mobile` varchar(15) DEFAULT NULL COMMENT '手机',`politicalFace` int(1) unsigned DEFAULT NULL COMMENT '政治面貌:1群众、2党员、3无党派人士',`nationality` varchar(20) DEFAULT NULL COMMENT '国籍:1中国大陆、2中国香港、3中国澳门、4中国台湾、5其他',`validateCode` varchar(32) DEFAULT NULL COMMENT '找回密码时的验证code',`pwdErrCount` tinyint(3) DEFAULT NULL COMMENT '密码输入错误次数',`source` varchar(20) DEFAULT NULL COMMENT '会员来源',`marriage` varchar(60) DEFAULT NULL COMMENT '婚姻状况:1未婚、2已婚、3离异',`money` decimal(15,2) DEFAULT NULL COMMENT '账户余额',`moneyPwd` varchar(32) DEFAULT NULL COMMENT '余额支付密码',`isEmailVerify` tinyint(1) DEFAULT NULL COMMENT '是否验证email',`isSmsVerify` tinyint(1) DEFAULT NULL COMMENT '是否验证短信',`smsVerifyCode` varchar(30) DEFAULT NULL COMMENT '邮件验证码',`emailVerifyCode` varchar(30) DEFAULT NULL COMMENT '短信验证码',`verifySendCoupon` tinyint(1) DEFAULT NULL COMMENT '是否验证发送优惠券',`canReceiveEmail` tinyint(1) DEFAULT NULL COMMENT '是否接收邮件',`modified` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',`channelId` tinyint(4) DEFAULT '0' COMMENT '??EP???',`grade_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '等级ID',`nick_name` varchar(60) NOT NULL DEFAULT '' COMMENT '昵称',`is_blackList` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否黑名单 : 0:非黑名单 1:黑名单',PRIMARY KEY (`id`),KEY `siteId` (`siteId`,`email`),KEY `memberRankId` (`memberRankId`)
) ENGINE=InnoDB AUTO_INCREMENT=951 DEFAULT CHARSET=utf8;
1.2.4、行为日志表:tbl_logs
电商网站中用户浏览网站访问行为日志数据(浏览数据),总共11个字段,此类数据属于最多。
CREATE TABLE `tbl_logs` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`log_id` varchar(50) DEFAULT NULL,`remote_ip` varchar(50) DEFAULT NULL,`site_global_ticket` varchar(250) DEFAULT NULL,`site_global_session` varchar(250) DEFAULT NULL,`global_user_id` varchar(50) DEFAULT NULL,`cookie_text` mediumtext,`user_agent` varchar(250) DEFAULT NULL,`ref_url` varchar(250) DEFAULT NULL,`loc_url` varchar(250) DEFAULT NULL,`log_time` varchar(50) DEFAULT NULL,PRIMARY KEY (`id`),KEY `log_time` (`log_time`)
) ENGINE=MyISAM AUTO_INCREMENT=1160286 DEFAULT CHARSET=utf8;
1.2.5、订单数据表:tbl_orders
电商网站中用户购买物品下单的订单数据,总共112个字段,记录每个订单详细信息。
CREATE TABLE `tbl_orders` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`siteId` int(10) unsigned NOT NULL,`isTest` tinyint(1) unsigned NOT NULL COMMENT '是否是测试订单',`hasSync` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已同步(临时添加)',`isBackend` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '是否为后台添加的订单',`isBook` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '是否为后台添加的订单',`isCod` tinyint(1) unsigned NOT NULL COMMENT '是否是货到付款订单',`notAutoConfirm` tinyint(1) unsigned NOT NULL COMMENT '是否是非自动确认订单',`isPackage` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否为套装订单',`packageId` int(10) unsigned NOT NULL COMMENT '套装ID',`orderSn` varchar(50) NOT NULL COMMENT '订单号',`relationOrderSn` varchar(50) NOT NULL COMMENT '关联订单编号',`memberId` int(10) unsigned NOT NULL COMMENT '会员id',`predictId` int(10) unsigned NOT NULL COMMENT '会员购买预测ID',`memberEmail` varchar(120) NOT NULL COMMENT '会员邮件',`addTime` int(10) unsigned NOT NULL,`syncTime` int(10) unsigned NOT NULL COMMENT '同步到此表中的时间',`orderStatus` smallint(3) NOT NULL COMMENT '订单状态',`payTime` int(10) unsigned NOT NULL COMMENT '在线付款时间',`paymentStatus` smallint(3) unsigned NOT NULL COMMENT '付款状态:0 买家未付款 1 买家已付款 ',`receiptConsignee` varchar(20) NOT NULL COMMENT '发票收件人',`receiptAddress` varchar(255) NOT NULL COMMENT '发票地址',`receiptZipcode` varchar(20) NOT NULL COMMENT '发票邮编',`receiptMobile` varchar(30) NOT NULL COMMENT '发票联系电话',`productAmount` decimal(10,2) unsigned NOT NULL COMMENT '商品金额,等于订单中所有的商品的单价乘以数量之和',`orderAmount` decimal(10,2) unsigned NOT NULL COMMENT '订单总金额,等于商品总金额+运费',`paidBalance` decimal(10,2) unsigned NOT NULL COMMENT '余额账户支付总金额',`giftCardAmount` decimal(10,2) unsigned NOT NULL COMMENT '礼品卡抵用金额',`paidAmount` decimal(10,2) unsigned NOT NULL COMMENT '已支付金额',`shippingAmount` decimal(10,2) NOT NULL COMMENT '淘宝运费',`totalEsAmount` decimal(10,2) unsigned NOT NULL COMMENT '网单中总的节能补贴金额之和',`usedCustomerBalanceAmount` decimal(10,2) unsigned NOT NULL COMMENT '使用的客户的余额支付金额',`customerId` int(10) unsigned NOT NULL COMMENT '用余额支付的客户ID',`bestShippingTime` varchar(100) NOT NULL COMMENT '最佳配送时间描述',`paymentCode` varchar(20) NOT NULL COMMENT '支付方式code',`payBankCode` varchar(20) NOT NULL COMMENT '网银代码',`paymentName` varchar(60) NOT NULL COMMENT '支付方式名称',`consignee` varchar(60) NOT NULL COMMENT '收货人',`originRegionName` varchar(255) NOT NULL COMMENT '原淘宝收货地址信息',`originAddress` varchar(255) NOT NULL COMMENT '原淘宝收货人详细收货信息',`province` int(10) unsigned NOT NULL COMMENT '收货地址中国省份',`city` int(10) unsigned NOT NULL COMMENT '收货地址中的城市',`region` int(10) unsigned NOT NULL COMMENT '收货地址中城市中的区',`street` int(10) unsigned NOT NULL COMMENT '街道ID',`markBuilding` int(10) NOT NULL COMMENT '标志建筑物',`poiId` varchar(64) NOT NULL DEFAULT '' COMMENT '标建ID',`poiName` varchar(100) DEFAULT '' COMMENT '标建名称',`regionName` varchar(200) NOT NULL COMMENT '地区名称(如:北京 北京 昌平区 兴寿镇)',`address` varchar(255) NOT NULL COMMENT '收货地址中用户输入的地址,一般是区以下的详细地址',`zipcode` varchar(20) NOT NULL COMMENT '收货地址中的邮编',`mobile` varchar(15) NOT NULL COMMENT '收货人手机号',`phone` varchar(20) NOT NULL COMMENT '收货人固定电话号',`receiptInfo` text NOT NULL COMMENT '发票信息,序列化数组array(''title'' =>.., ''receiptType'' =>..,''needReceipt'' => ..,''companyName'' =>..,''taxSpotNum'' =>..,''regAddress''=>..,''regPhone''=>..,''bank''=>..,''bankAccount''=>..)',`delayShipTime` int(10) unsigned NOT NULL COMMENT '延迟发货日期',`remark` text NOT NULL COMMENT '订单备注',`bankCode` varchar(255) DEFAULT NULL COMMENT '银行代码,用于银行直链支付',`agent` varchar(255) DEFAULT NULL COMMENT '处理人',`confirmTime` int(11) DEFAULT NULL COMMENT '确认时间',`firstConfirmTime` int(10) unsigned NOT NULL COMMENT '首次确认时间',`firstConfirmPerson` varchar(200) NOT NULL COMMENT '第一次确认人',`finishTime` int(11) DEFAULT NULL COMMENT '订单完成时间',`tradeSn` varchar(255) DEFAULT NULL COMMENT '在线支付交易流水号',`signCode` varchar(20) NOT NULL COMMENT '收货确认码',`source` varchar(30) NOT NULL COMMENT '订单来源',`sourceOrderSn` varchar(60) NOT NULL COMMENT '外部订单号',`onedayLimit` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否支持24小时限时达',`logisticsManner` int(1) NOT NULL COMMENT '物流评价',`afterSaleManner` int(1) NOT NULL COMMENT '售后评价',`personManner` int(1) NOT NULL COMMENT '人员态度',`visitRemark` varchar(400) NOT NULL COMMENT '回访备注',`visitTime` int(11) NOT NULL COMMENT '回访时间',`visitPerson` varchar(20) NOT NULL COMMENT '回访人',`sellPeople` varchar(20) NOT NULL COMMENT '销售代表',`sellPeopleManner` int(1) NOT NULL COMMENT '销售代表服务态度',`orderType` tinyint(2) NOT NULL COMMENT '订单类型 默认0 团购预付款 团购正式单 2',`hasReadTaobaoOrderComment` tinyint(1) unsigned NOT NULL COMMENT '是否已读取过淘宝订单评论',`memberInvoiceId` int(10) unsigned NOT NULL COMMENT '订单发票ID,MemberInvoices表的主键',`taobaoGroupId` int(10) unsigned NOT NULL COMMENT '淘宝万人团活动ID',`tradeType` varchar(100) NOT NULL COMMENT '交易类型,值参考淘宝',`stepTradeStatus` varchar(100) NOT NULL COMMENT '分阶段付款的订单状态,值参考淘宝',`stepPaidFee` decimal(10,2) NOT NULL COMMENT '分阶段付款的已付金额',`depositAmount` decimal(10,2) unsigned NOT NULL COMMENT '定金应付金额',`balanceAmount` decimal(10,2) unsigned NOT NULL COMMENT '尾款应付金额',`autoCancelDays` int(10) unsigned NOT NULL COMMENT '未付款过期的天数',`isNoLimitStockOrder` tinyint(1) unsigned NOT NULL COMMENT '是否是无库存限制订单',`ccbOrderReceivedLogId` int(10) unsigned NOT NULL COMMENT '建行订单接收日志ID',`ip` varchar(50) NOT NULL COMMENT '订单来源IP,针对商城前台订单',`isGiftCardOrder` tinyint(1) unsigned NOT NULL COMMENT '是否为礼品卡订单',`giftCardDownloadPassword` varchar(200) NOT NULL COMMENT '礼品卡下载密码',`giftCardFindMobile` varchar(20) NOT NULL COMMENT '礼品卡密码找回手机号',`autoConfirmNum` int(10) unsigned NOT NULL COMMENT '已自动确认的次数',`codConfirmPerson` varchar(100) NOT NULL COMMENT '货到付款确认人',`codConfirmTime` int(11) NOT NULL COMMENT '货到付款确认时间',`codConfirmRemark` varchar(255) NOT NULL COMMENT '货到付款确认备注',`codConfirmState` tinyint(1) unsigned NOT NULL COMMENT '货到侍确认状态0无需未确认,1待确认,2确认通过可以发货,3确认无效,订单可以取消',`paymentNoticeUrl` text NOT NULL COMMENT '付款结果通知URL',`addressLon` decimal(9,6) NOT NULL COMMENT '地址经度',`addressLat` decimal(9,6) NOT NULL COMMENT '地址纬度',`smConfirmStatus` tinyint(4) NOT NULL COMMENT '标建确认状态。1 = 初始状态;2 = 已发HP,等待确认;3 = 待人工处理;4 = 待自动处理;5 = 已确认',`smConfirmTime` int(10) NOT NULL COMMENT '请求发送HP时间,格式为时间戳',`smManualTime` int(10) DEFAULT '0' COMMENT '转人工确认时间',`smManualRemark` varchar(200) DEFAULT '' COMMENT '转人工确认备注',`isTogether` tinyint(3) unsigned NOT NULL COMMENT '货票通行',`isNotConfirm` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否是无需确认的订单',`tailPayTime` int(11) NOT NULL DEFAULT '0' COMMENT '尾款付款时间',`points` int(11) DEFAULT '0' COMMENT '网单使用积分',`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',`channelId` tinyint(4) DEFAULT '0' COMMENT '区分EP和商城',`isProduceDaily` int(2) NOT NULL DEFAULT '0' COMMENT '是否日日单(1:是,0:否)',`couponCode` varchar(20) NOT NULL DEFAULT '' COMMENT '优惠码编码',`couponCodeValue` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '优惠码优惠金额',`ckCode` varchar(200) NOT NULL DEFAULT '',PRIMARY KEY (`id`),UNIQUE KEY `ux_Orders_ordersn` (`orderSn`),KEY `memberId` (`memberId`),KEY `agent` (`agent`),KEY `addTime` (`addTime`),KEY `payTime` (`payTime`),KEY `orderStatus` (`orderStatus`),KEY `sourceOrderSn` (`sourceOrderSn`),KEY `smConfirmStatus` (`smConfirmStatus`),KEY `idx_orders_source_orderStatus_hasReadTaobaoOrderComment` (`source`,`orderStatus`,`hasReadTaobaoOrderComment`),KEY `idx_order_mobile` (`mobile`),KEY `idx_orders_codConfirmState` (`codConfirmState`),KEY `modified` (`modified`),KEY `tailPayTime` (`tailPayTime`),KEY `ix_Orders_syncTime` (`syncTime`),KEY `ix_Orders_relationOrderSn` (`relationOrderSn`),KEY `ix_Orders_consignee` (`consignee`),KEY `idx_firstConfirmTime` (`firstConfirmTime`),KEY `ix_Orders_paymentStatus` (`paymentStatus`)
) ENGINE=InnoDB AUTO_INCREMENT=120128 DEFAULT CHARSET=utf8;
数据导入
设置mysql 导入数据允许的最大包大小:
set global max_allowed_packet=1024102432;
导入数据
source /opt/tags_dat.sql;
此表中目前的数据量为:125463条
mysql> SELECT COUNT(1) FROM tags_dat.tbl_goods ;
±---------+
| COUNT(1) |
±---------+
| 125463 |
±---------+
此表中目前的数据量为:950条
mysql> SELECT COUNT(1) FROM tags_dat.tbl_users ;
±---------+
| COUNT(1) |
±---------+
| 950 |
±---------+
此表中目前的数据量为:376983条
mysql> SELECT COUNT(1) FROM tags_dat.tbl_logs;
±---------+
| COUNT(1) |
±---------+
| 376983 |
±---------+
此表中目前的数据量为:120125条
mysql> SELECT COUNT(1) FROM tags_dat.tbl_orders;
±---------+
| COUNT(1) |
±---------+
| 120125 |
±---------+
1.3、Hive 数据仓库
将MySQL数据库中表的数据导入到Hive表中,以便加载到HBase表中。
启动HiveMetastore服务和HiveServer2服务,使用beeline命令行连接,相关命令如下:
[root@bigdata-cdh01 ~]# /export/servers/hive/bin/beeline
Beeline version 1.1.0-cdh5.14.0 by Apache Hive
beeline> !connect jdbc:hive2://bd001:10000
scan complete in 2ms
Connecting to jdbc:hive2://bd001:10000
Enter username for jdbc:hive2://bd001:10000: root
Enter password for jdbc:hive2://bd001:10000: ****
Connected to: Apache Hive (version 1.1.0-cdh5.14.0)
Driver: Hive JDBC (version 1.1.0-cdh5.14.0)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://bd001:10000>
1.3.1、创建表
创建Hive中数据库Database:
CREATE DATABASE tags_dat;
根据MySQL数据库表在Hive数据仓库中构建相应的表:
行为日志表:tbl_logs
/export/servers/sqoop/bin/sqoop create-hive-table
–connect jdbc:mysql://bd001:3306/tags_dat
–table tbl_logs
–username root
–password 123456
–hive-table tags_dat2.tbl_logs
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
商品表:tbl_goods
/export/servers/sqoop/bin/sqoop create-hive-table
–connect jdbc:mysql://bd001:3306/tags_dat
–table tbl_goods
–username root
–password 123456
–hive-table tags_dat2.tbl_goods
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
订单数据表:tbl_orders
/export/servers/sqoop/bin/sqoop create-hive-table
–connect jdbc:mysql://bd001:3306/tags_dat
–table tbl_orders
–username root
–password 123456
–hive-table tags_dat2.tbl_orders
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
用户信息表:tbl_users
/export/servers/sqoop/bin/sqoop create-hive-table
–connect jdbc:mysql://bd001:3306/tags_dat
–table tbl_orders
–username root
–password 123456
–hive-table tags_dat2.tbl_orders
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
用户信息表:tbl_users
/export/servers/sqoop/bin/sqoop create-hive-table
–connect jdbc:mysql://bd001:3306/tags_dat
–table tbl_users
–username root
–password 123456
–hive-table tags_dat2.tbl_users
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
1.3.2、导入数据至Hive表
使用Sqoop将MySQL数据库表中的数据导入到Hive表中(本质就是存储在HDFS上),具体命令如下。
行为日志表:tbl_logs
/export/servers/sqoop/bin/sqoop import
–connect jdbc:mysql://bd001:3306/tags_dat
–username root
–password 123456
–table tbl_logs
–direct
–hive-overwrite
–delete-target-dir
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
–hive-table tags_dat2.tbl_logs
–hive-import
–num-mappers 20
商品表:tbl_goods
/export/servers/sqoop/bin/sqoop import
–connect jdbc:mysql://bd001:3306/tags_dat
–username root
–password 123456
–table tbl_goods
–direct
–hive-overwrite
–delete-target-dir
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
–hive-table tags_dat2.tbl_goods
–hive-import
–num-mappers 5
订单数据表:tbl_orders
/export/servers/sqoop/bin/sqoop import
–connect jdbc:mysql://bd001:3306/tags_dat
–username root
–password 123456
–table tbl_orders
–direct
–hive-overwrite
–delete-target-dir
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
–hive-table tags_dat2.tbl_orders
–hive-import
–num-mappers 10
用户信息表:tbl_users
/export/servers/sqoop/bin/sqoop import
–connect jdbc:mysql://bd001:3306/tags_dat
–username root
–password 123456
–table tbl_users
–direct
–hive-overwrite
–delete-target-dir
–fields-terminated-by ‘\t’
–lines-terminated-by ‘\n’
–hive-table tags_dat2.tbl_users
–hive-import
–num-mappers 1
2、数据导入(Import)
将MySQL表中业务数据导入大数据平台中如HBase表,方案如下所示:
2.1、HBase 表设计
电商网站中各类数据(用户信息数据、用户访问日志数据及用户订单数据)存储到HBase表中,便于检索和分析构建电商用户画像,有如下几张表:
hbase(main):008:0> list
TABLE
tbl_logs
tbl_orders
tbl_users
tbl_goods
=> [“tbl_logs”, “tbl_orders”, “tbl_users”, “tbl_goods”]
用户基本信息:tbl_users
-- 1、如果用户表存在先删除
hbase(main):013:0> disable 'tbl_users'
hbase(main):014:0> drop 'tbl_users'
-- 或者清空表
hbase(main):015:0> truncate 'tbl_users'
-- 2、创建用户表
hbase(main):016:0> create 'tbl_users2','detail'hbase(main):019:0> desc "tbl_users"
Table tbl_users is ENABLED
tbl_users
COLUMN FAMILIES DESCRIPTION
{NAME => 'detail', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}hbase(main):020:0> count "tbl_users"
950 row(s) in 0.1910 seconds
HBase表中有1个Region:
行为日志数据:tbl_logs
,共376983条数据
# 1、如果行为表存在先删除
hbase(main):008:0> disable 'tbl_logs'
hbase(main):009:0> drop 'tbl_logs'
# 2、创建行为表
hbase(main):010:0> create 'tbl_logs2', 'detail', SPLITS => ['49394']
# 3、查看表中一条数据
hbase(main):011:0> scan 'tbl_logs', { LIMIT => 1 }
hbase(main):012:0> desc "tbl_logs"
Table tbl_logs is ENABLED
tbl_logs
COLUMN FAMILIES DESCRIPTION
{NAME => 'detail', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}hbase(main):004:0> count "tbl_logs"
376983 row(s) in 63.4920 seconds
用户订单数据:tbl_orders
,共120125条
-- 1、如果订单表存在先删除
hbase(main):012:0> disable 'tbl_orders'
hbase(main):013:0> drop 'tbl_orders'
-- 2、创建订单表
hbase(main):014:0> create 'tbl_orders2','detail'hbase(main):015:0> desc "tbl_orders"
Table tbl_orders is ENABLED
tbl_orders
COLUMN FAMILIES DESCRIPTION
{NAME => 'detail', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}hbase(main):016:0> count "tbl_orders"
120125 row(s) in 38.9170 seconds
订单商品数据:tbl_goods
-- 1、如果用户表存在先删除
hbase(main):013:0> disable 'tbl_goods'
hbase(main):014:0> drop 'tbl_goods'
-- 或者清空表
hbase(main):015:0> truncate 'tbl_goods2'
-- 2、创建用户表
hbase(main):016:0> create 'tbl_goods2','detail'hbase(main):019:0> desc "tbl_goods"
Table tbl_users is ENABLED
tbl_users
COLUMN FAMILIES DESCRIPTION
{NAME => 'detail', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}hbase(main):016:0> count "tbl_goods"
120125 row(s) in 38.9170 seconds
2.2、Sqoop直接导入
可以使用SQOOP将MySQL表的数据导入到HBase表中,指定表的名称、列簇及RowKey,范例如下所示:
/export/servers/sqoop/bin/sqoop import
-D sqoop.hbase.add.row.key=true
–connect jdbc:mysql://bd001:3306/tags_dat
–username root
–password 123456
–table tbl_users
–hbase-create-table
–hbase-table tbl_users2
–column-family detail
–hbase-row-key id
–num-mappers 2
参数含义解释:
1、-D sqoop.hbase.add.row.key=true
是否将rowkey相关字段写入列族中,默认为false,默认情况下你将在列族中看不到任何row key中的字段。注意,该参数必须放在import之后。
2、–hbase-create-table 如果hbase中该表不存在则创建
3、–hbase-table 对应的hbase表名
4、–hbase-row-key hbase表中的rowkey,注意格式
5、–column-family hbase表的列族
知识拓展:如何使用SQOOP进行增量导入数据至HBase表,范例命令如下:
/export/servers/sqoop/bin/sqoop import
-D sqoop.hbase.add.row.key=true
–connect jdbc:mysql://bd001:3306/tags_dat
–username root
–password 123456
–table tbl_logs
–
–hbase-create-table
–hbase-table tag_logs
–column-family detail
–hbase-row-key id
–num-mappers 20
–incremental lastmodified
–check-column log_time
–last-value ‘2019-08-13 00:00:00’ \
相关增量导入参数说明:
1、–incremental lastmodified 增量导入支持两种模式 append 递增的列;lastmodified时间戳。
2、–check-column 增量导入时参考的列
3、–last-value 最小值,这个例子中表示导入2019-08-13 00:00:00到今天的值
2.3、HBase ImportTSV
ImportTSV功能描述:
将tsv(也可以是csv,每行数据中各个字段使用分隔符分割)格式文本数据,加载到HBase表中。
1)、采用Put方式加载导入
2)、采用BulkLoad方式批量加载导入
使用如下命令,查看HBase官方自带工具类使用说明:
HADOOP_HOME=/export/servers/hadoop
HBASE_HOME=/export/servers/hbase
HADOOP_CLASSPATH=${HBASE_HOME}/bin/hbase mapredcp
用户画像第二章(企业级360°用户画像_数据调研及ETL)相关推荐
- 用户画像第四章(企业级360°用户画像_标签开发_挖掘标签_用户购物性别模型-USG)
用户购物性别模型-USG USG模型引入 USG(User Shopping Gender) 2.5.1.AI驱动的电商用户模型:性别属性是这样确定的 首先带领大家了解一下,如何通过大数据来确定用户的 ...
- 用户画像第一章(企业级360°全方位用户画像_环境搭建)
环境搭建 2.4.项目工程演示 将项目工程[tags(演示版).zip]解压,为Maven Project,导入IDEA中,如下图所示: 选择解压的工程,如下图: 一直点击下一步[Next]即可,最终 ...
- 企业级360用户画像
一.用户画像概述 二.项目功能及架构 三.项目开发 3.0.业务数据调研及ETL 3.1.规则标签 标签存储与计算 标签模型计算 标签模型:用户性别标签 标签开发:规则匹配型标签 标签模板(Templ ...
- 大数据【企业级360°全方位用户画像】业务数据调研及ETL
写在前面: 博主是一名大数据的初学者,昵称来源于<爱丽丝梦游仙境>中的Alice和自己的昵称.作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样 ...
- 【 linux系统入门管理篇-第二章文件和用户的管理】
linux系统入门管理篇-第二章文件和用户的管理 本章介绍 一.文件管理 (一).Linux目录结构 (二).文件管理 1.文件管理命令 2.文件类型 二.用户管理 (一).用户/组基本概念 (二). ...
- Linux入门到精通:第 1 关——创建/删除新用户(第二章:Linux之用户管理)
第 1 关--创建/删除新用户 任务描述 相关知识 Linux创建用户命令 案例演示 Linux删除用户命令 案例演示 编程要求 评测说明 任务描述 恭喜你已经完成了Linux入门的实训,接下来让我们 ...
- 大数据用户画像实战之业务数据调研及ETL
整个用户画像(UserProfile)项目中,数据.业务及技术流程图如下所示: 其中数据源存储在业务系统数据库:MySQL 数据库中,采用SQOOP全量/增量将数据抽取到 HDFS(Hive表中),通 ...
- 《傻瓜计量经济学与stata应用》第二章do文件,记得把数据考到当前目录或带上路径,否则可能无法打开
*==============================================================================* *================== ...
- 第二章导数与微分思维导图_线性代数第二章 矩阵 思维导图
这章内容复习集中在两方面:矩阵乘法:可逆矩阵及相关内容(矩阵方程和伴随矩阵). 可逆矩阵是全课程的一个关键性概念,与各章内容都有联系,应着重注意这些联系.
- yxc_第二章 数据结构(一)_栈和队列
目录 一.栈和队列的代码操作 1.AcWing 828 模拟栈 2.AcWing 829 模拟队列 二.单调栈 1.AcWing 830 单调栈 三.单调队列 1.AcWing 154 滑动窗口 一. ...
最新文章
- linux awk 分组统计
- android 返回销毁活动,android返回活动时会被销毁并且不会恢复
- PRML笔记 第一章 Introduction
- 《延世大学韩国语教程2》第二十课 办公室(上)
- Java Web提交任务到Spark Spark通过Java Web提交任务
- 中国自研数据库超越Oracle登顶全球第一
- java练习异常函数InputMismatchException
- 机器学习数学基础学习总结(一)
- 清理windows10系统垃圾文件-bat批处理命令
- 教你win7如何共享打印机的详细教程
- Android上边抽屉式标题,Android Navigation Drawer样式抽屉的使用
- Perfmon - Windows 自带系统监测工具
- BGP Confederation(BGP联盟)
- 一个好玩的辞职信HTML版
- Java子线程异常及异常处理
- 白话——海明校验码及编码过程
- VBS判断excel版本
- 简单易学的五款英伦风格鸡尾酒PartyOK版
- Python网络爬虫之模拟登陆
- Android 文件转语音TTS输出(文字转语音)
热门文章