├── README.md
├── code
├── log_analyse
│ ├── .idea
│ │ ├── artifacts
│ │ │ └── log_analyse_war_exploded.xml
│ │ ├── compiler.xml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ └── workspace.xml
│ ├── log_analyse.iml
│ ├── out
│ │ ├── artifacts
│ │ │ └── log_analyse_war_exploded
│ │ │ │ ├── WEB-INF
│ │ │ │ ├── classes
│ │ │ │ │ └── com
│ │ │ │ │ │ └── msb
│ │ │ │ │ │ ├── client
│ │ │ │ │ │ ├── AnalyticsEngineSDK.class
│ │ │ │ │ │ ├── SendDataMonitor$1.class
│ │ │ │ │ │ ├── SendDataMonitor$HttpRequestUtil.class
│ │ │ │ │ │ └── SendDataMonitor.class
│ │ │ │ │ │ └── test
│ │ │ │ │ │ └── Test.class
│ │ │ │ └── web.xml
│ │ │ │ ├── demo.jsp
│ │ │ │ ├── demo2.jsp
│ │ │ │ ├── demo3.jsp
│ │ │ │ ├── demo4.jsp
│ │ │ │ ├── index.jsp
│ │ │ │ └── js
│ │ │ │ └── analytics.js
│ │ └── production
│ │ │ └── log_analyse
│ │ │ └── com
│ │ │ └── msb
│ │ │ ├── client
│ │ │ ├── AnalyticsEngineSDK.class
│ │ │ ├── SendDataMonitor$1.class
│ │ │ ├── SendDataMonitor$HttpRequestUtil.class
│ │ │ └── SendDataMonitor.class
│ │ │ └── test
│ │ │ └── Test.class
│ ├── src
│ │ └── com
│ │ │ └── msb
│ │ │ ├── client
│ │ │ ├── AnalyticsEngineSDK.java
│ │ │ └── SendDataMonitor.java
│ │ │ └── test
│ │ │ └── Test.java
│ └── web
│ │ ├── WEB-INF
│ │ └── web.xml
│ │ ├── demo.jsp
│ │ ├── demo2.jsp
│ │ ├── demo3.jsp
│ │ ├── demo4.jsp
│ │ ├── index.jsp
│ │ └── js
│ │ └── analytics.js
├── log_analyse_dataclean
│ ├── .idea
│ │ ├── compiler.xml
│ │ ├── encodings.xml
│ │ ├── misc.xml
│ │ └── workspace.xml
│ ├── log_analyse_dataclean.iml
│ ├── pom.xml
│ ├── src
│ │ └── main
│ │ │ ├── java
│ │ │ ├── com
│ │ │ │ └── mashibing
│ │ │ │ │ ├── common
│ │ │ │ │ ├── DateEnum.java
│ │ │ │ │ ├── EventLogConstants.java
│ │ │ │ │ ├── GlobalConstants.java
│ │ │ │ │ └── KpiType.java
│ │ │ │ │ ├── etl
│ │ │ │ │ ├── mr
│ │ │ │ │ │ └── ald
│ │ │ │ │ │ │ ├── AnalyserLogDataMapper.java
│ │ │ │ │ │ │ └── AnalyserLogDataRunner.java
│ │ │ │ │ └── util
│ │ │ │ │ │ ├── IPSeekerExt.java
│ │ │ │ │ │ ├── LoggerUtil.java
│ │ │ │ │ │ ├── UserAgentUtil.java
│ │ │ │ │ │ └── ip
│ │ │ │ │ │ └── IPSeeker.java
│ │ │ │ │ └── util
│ │ │ │ │ ├── EJob.java
│ │ │ │ │ ├── JdbcManager.java
│ │ │ │ │ └── TimeUtil.java
│ │ │ └── test
│ │ │ │ ├── TestDataMaker.java
│ │ │ │ ├── TestIPSeeker.java
│ │ │ │ ├── TestIPSeekerExt.java
│ │ │ │ ├── TestLoggerUtil.java
│ │ │ │ └── TestUserAgentUtil.java
│ │ │ └── resource
│ │ │ ├── core-site.xml
│ │ │ ├── hdfs-site.xml
│ │ │ ├── log4j.properties
│ │ │ ├── mapred-site.xml
│ │ │ ├── output-collector.xml
│ │ │ ├── qqwry.dat
│ │ │ ├── query-mapping.xml
│ │ │ ├── transformer-env.xml
│ │ │ └── yarn-site.xml
│ └── target
│ │ └── classes
│ │ ├── com
│ │ └── mashibing
│ │ │ ├── common
│ │ │ ├── DateEnum.class
│ │ │ ├── EventLogConstants$EventEnum.class
│ │ │ ├── EventLogConstants.class
│ │ │ ├── GlobalConstants.class
│ │ │ └── KpiType.class
│ │ │ ├── etl
│ │ │ ├── mr
│ │ │ │ └── ald
│ │ │ │ │ ├── AnalyserLogDataMapper$1.class
│ │ │ │ │ ├── AnalyserLogDataMapper.class
│ │ │ │ │ └── AnalyserLogDataRunner.class
│ │ │ └── util
│ │ │ │ ├── IPSeekerExt$RegionInfo.class
│ │ │ │ ├── IPSeekerExt.class
│ │ │ │ ├── LoggerUtil.class
│ │ │ │ ├── UserAgentUtil$UserAgentInfo.class
│ │ │ │ ├── UserAgentUtil.class
│ │ │ │ └── ip
│ │ │ │ ├── IPSeeker$IPEntry.class
│ │ │ │ ├── IPSeeker$IPLocation.class
│ │ │ │ ├── IPSeeker$IPSeekerUtils.class
│ │ │ │ └── IPSeeker.class
│ │ │ └── util
│ │ │ ├── EJob$1.class
│ │ │ ├── EJob.class
│ │ │ ├── JdbcManager.class
│ │ │ └── TimeUtil.class
│ │ ├── core-site.xml
│ │ ├── hdfs-site.xml
│ │ ├── log4j.properties
│ │ ├── mapred-site.xml
│ │ ├── output-collector.xml
│ │ ├── qqwry.dat
│ │ ├── query-mapping.xml
│ │ ├── test
│ │ ├── Sex.class
│ │ ├── TestIPSeek.class
│ │ └── TestUserAgent.class
│ │ ├── transformer-env.xml
│ │ └── yarn-site.xml
├── log_analyse_full
│ ├── .idea
│ │ ├── compiler.xml
│ │ ├── encodings.xml
│ │ ├── misc.xml
│ │ └── workspace.xml
│ ├── log_analyse_full.iml
│ ├── pom.xml
│ ├── src
│ │ └── main
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── mashibing
│ │ │ │ ├── common
│ │ │ │ ├── DateEnum.java
│ │ │ │ ├── EventLogConstants.java
│ │ │ │ ├── GlobalConstants.java
│ │ │ │ └── KpiType.java
│ │ │ │ ├── etl
│ │ │ │ ├── mr
│ │ │ │ │ └── ald
│ │ │ │ │ │ ├── AnalyserLogDataMapper.java
│ │ │ │ │ │ └── AnalyserLogDataRunner.java
│ │ │ │ └── util
│ │ │ │ │ ├── IPSeekerExt.java
│ │ │ │ │ ├── LoggerUtil.java
│ │ │ │ │ ├── UserAgentUtil.java
│ │ │ │ │ └── ip
│ │ │ │ │ └── IPSeeker.java
│ │ │ │ ├── transformer
│ │ │ │ ├── hive
│ │ │ │ │ ├── DateDimensionUDF.java
│ │ │ │ │ └── vd
│ │ │ │ │ │ ├── statsViewDepth.hql
│ │ │ │ │ │ └── view_depth_run.sh
│ │ │ │ ├── model
│ │ │ │ │ ├── dim
│ │ │ │ │ │ ├── StatsCommonDimension.java
│ │ │ │ │ │ ├── StatsDimension.java
│ │ │ │ │ │ ├── StatsInboundBounceDimension.java
│ │ │ │ │ │ ├── StatsInboundDimension.java
│ │ │ │ │ │ ├── StatsLocationDimension.java
│ │ │ │ │ │ ├── StatsUserDimension.java
│ │ │ │ │ │ └── base
│ │ │ │ │ │ │ ├── BaseDimension.java
│ │ │ │ │ │ │ ├── BrowserDimension.java
│ │ │ │ │ │ │ ├── DateDimension.java
│ │ │ │ │ │ │ ├── InboundDimension.java
│ │ │ │ │ │ │ ├── KpiDimension.java
│ │ │ │ │ │ │ ├── LocationDimension.java
│ │ │ │ │ │ │ └── PlatformDimension.java
│ │ │ │ │ └── value
│ │ │ │ │ │ ├── BaseStatsValueWritable.java
│ │ │ │ │ │ ├── map
│ │ │ │ │ │ ├── TextsOutputValue.java
│ │ │ │ │ │ └── TimeOutputValue.java
│ │ │ │ │ │ └── reduce
│ │ │ │ │ │ ├── InboundBounceReduceValue.java
│ │ │ │ │ │ ├── InboundReduceValue.java
│ │ │ │ │ │ ├── LocationReducerOutputValue.java
│ │ │ │ │ │ └── MapWritableValue.java
│ │ │ │ ├── mr
│ │ │ │ │ ├── IOutputCollector.java
│ │ │ │ │ ├── TransformerBaseMapper.java
│ │ │ │ │ ├── TransformerBaseRunner.java
│ │ │ │ │ ├── TransformerOutputFormat.java
│ │ │ │ │ ├── am
│ │ │ │ │ │ ├── ActiveMemberCollector.java
│ │ │ │ │ │ ├── ActiveMemberMapper.java
│ │ │ │ │ │ ├── ActiveMemberReducer.java
│ │ │ │ │ │ ├── ActiveMemberRunner.java
│ │ │ │ │ │ └── package-info.java
│ │ │ │ │ ├── au
│ │ │ │ │ │ ├── ActiveUserBrowserCollector.java
│ │ │ │ │ │ ├── ActiveUserCollector.java
│ │ │ │ │ │ ├── ActiveUserCombine.java
│ │ │ │ │ │ ├── ActiveUserMapper.java
│ │ │ │ │ │ ├── ActiveUserReducer.java
│ │ │ │ │ │ ├── ActiveUserRunner.java
│ │ │ │ │ │ └── HourlyActiveUserCollector.java
│ │ │ │ │ ├── inbound
│ │ │ │ │ │ ├── InboundCollector.java
│ │ │ │ │ │ ├── InboundMapper.java
│ │ │ │ │ │ ├── InboundReducer.java
│ │ │ │ │ │ ├── InboundRunner.java
│ │ │ │ │ │ ├── bounce
│ │ │ │ │ │ │ ├── InboundBounceCollector.java
│ │ │ │ │ │ │ ├── InboundBounceMapper.java
│ │ │ │ │ │ │ ├── InboundBounceReducer.java
│ │ │ │ │ │ │ ├── InboundBounceRunner.java
│ │ │ │ │ │ │ └── InboundBounceSecondSort.java
│ │ │ │ │ │ └── package-info.java
│ │ │ │ │ ├── location
│ │ │ │ │ │ ├── LocationCollector.java
│ │ │ │ │ │ ├── LocationMapper.java
│ │ │ │ │ │ ├── LocationReducer.java
│ │ │ │ │ │ ├── LocationRunner.java
│ │ │ │ │ │ └── package-info.java
│ │ │ │ │ ├── nm
│ │ │ │ │ │ ├── NewMemberCollector.java
│ │ │ │ │ │ ├── NewMemberMapper.java
│ │ │ │ │ │ ├── NewMemberReducer.java
│ │ │ │ │ │ ├── NewMemberRunner.java
│ │ │ │ │ │ └── package-info.java
│ │ │ │ │ ├── nu
│ │ │ │ │ │ ├── NewInstallUserMapper.java
│ │ │ │ │ │ ├── NewInstallUserReducer.java
│ │ │ │ │ │ ├── NewInstallUserRunner.java
│ │ │ │ │ │ ├── StatsDeviceBrowserNewInstallUserCollector.java
│ │ │ │ │ │ └── StatsUserNewInstallUserCollector.java
│ │ │ │ │ ├── pv
│ │ │ │ │ │ ├── PageViewCollector.java
│ │ │ │ │ │ ├── PageViewMapper.java
│ │ │ │ │ │ ├── PageViewReducer.java
│ │ │ │ │ │ └── PageViewRunner.java
│ │ │ │ │ └── sessions
│ │ │ │ │ │ ├── SessionsCollector.java
│ │ │ │ │ │ ├── SessionsMapper.java
│ │ │ │ │ │ ├── SessionsReducer.java
│ │ │ │ │ │ ├── SessionsRunner.java
│ │ │ │ │ │ └── package-info.java
│ │ │ │ ├── service
│ │ │ │ │ ├── IDimensionConverter.java
│ │ │ │ │ └── impl
│ │ │ │ │ │ ├── DimensionConverterImpl.java
│ │ │ │ │ │ └── InboundDimensionService.java
│ │ │ │ └── util
│ │ │ │ │ ├── MemberUtil.java
│ │ │ │ │ ├── TimeChain.java
│ │ │ │ │ └── UrlUtil.java
│ │ │ │ └── util
│ │ │ │ ├── EJob.java
│ │ │ │ ├── JdbcManager.java
│ │ │ │ └── TimeUtil.java
│ │ │ └── resource
│ │ │ ├── core-site.xml
│ │ │ ├── hdfs-site.xml
│ │ │ ├── log4j.properties
│ │ │ ├── mapred-site.xml
│ │ │ ├── output-collector.xml
│ │ │ ├── qqwry.dat
│ │ │ ├── query-mapping.xml
│ │ │ ├── transformer-env.xml
│ │ │ └── yarn-site.xml
│ └── target
│ │ └── classes
│ │ ├── com
│ │ └── mashibing
│ │ │ ├── common
│ │ │ ├── DateEnum.class
│ │ │ ├── EventLogConstants$EventEnum.class
│ │ │ ├── EventLogConstants.class
│ │ │ ├── GlobalConstants.class
│ │ │ └── KpiType.class
│ │ │ ├── etl
│ │ │ ├── mr
│ │ │ │ └── ald
│ │ │ │ │ ├── AnalyserLogDataMapper$1.class
│ │ │ │ │ ├── AnalyserLogDataMapper.class
│ │ │ │ │ └── AnalyserLogDataRunner.class
│ │ │ └── util
│ │ │ │ ├── IPSeekerExt$RegionInfo.class
│ │ │ │ ├── IPSeekerExt.class
│ │ │ │ ├── LoggerUtil.class
│ │ │ │ ├── UserAgentUtil$UserAgentInfo.class
│ │ │ │ ├── UserAgentUtil.class
│ │ │ │ └── ip
│ │ │ │ ├── IPSeeker$IPEntry.class
│ │ │ │ ├── IPSeeker$IPLocation.class
│ │ │ │ ├── IPSeeker$IPSeekerUtils.class
│ │ │ │ └── IPSeeker.class
│ │ │ ├── transformer
│ │ │ ├── hive
│ │ │ │ ├── DateDimensionUDF.class
│ │ │ │ └── vd
│ │ │ │ │ ├── statsViewDepth.hql
│ │ │ │ │ └── view_depth_run.sh
│ │ │ ├── model
│ │ │ │ ├── dim
│ │ │ │ │ ├── StatsCommonDimension.class
│ │ │ │ │ ├── StatsDimension.class
│ │ │ │ │ ├── StatsInboundBounceDimension.class
│ │ │ │ │ ├── StatsInboundDimension.class
│ │ │ │ │ ├── StatsLocationDimension.class
│ │ │ │ │ ├── StatsUserDimension.class
│ │ │ │ │ └── base
│ │ │ │ │ │ ├── BaseDimension.class
│ │ │ │ │ │ ├── BrowserDimension.class
│ │ │ │ │ │ ├── DateDimension.class
│ │ │ │ │ │ ├── InboundDimension.class
│ │ │ │ │ │ ├── KpiDimension.class
│ │ │ │ │ │ ├── LocationDimension.class
│ │ │ │ │ │ └── PlatformDimension.class
│ │ │ │ └── value
│ │ │ │ │ ├── BaseStatsValueWritable.class
│ │ │ │ │ ├── map
│ │ │ │ │ ├── TextsOutputValue.class
│ │ │ │ │ └── TimeOutputValue.class
│ │ │ │ │ └── reduce
│ │ │ │ │ ├── InboundBounceReduceValue.class
│ │ │ │ │ ├── InboundReduceValue.class
│ │ │ │ │ ├── LocationReducerOutputValue.class
│ │ │ │ │ └── MapWritableValue.class
│ │ │ ├── mr
│ │ │ │ ├── IOutputCollector.class
│ │ │ │ ├── TransformerBaseMapper.class
│ │ │ │ ├── TransformerBaseRunner.class
│ │ │ │ ├── TransformerOutputFormat$TransformerRecordWriter.class
│ │ │ │ ├── TransformerOutputFormat.class
│ │ │ │ ├── am
│ │ │ │ │ ├── ActiveMemberCollector.class
│ │ │ │ │ ├── ActiveMemberMapper.class
│ │ │ │ │ ├── ActiveMemberReducer.class
│ │ │ │ │ └── ActiveMemberRunner.class
│ │ │ │ ├── au
│ │ │ │ │ ├── ActiveUserBrowserCollector.class
│ │ │ │ │ ├── ActiveUserCollector.class
│ │ │ │ │ ├── ActiveUserCombine.class
│ │ │ │ │ ├── ActiveUserMapper.class
│ │ │ │ │ ├── ActiveUserReducer.class
│ │ │ │ │ ├── ActiveUserRunner$ActiveUserPartitioner.class
│ │ │ │ │ ├── ActiveUserRunner.class
│ │ │ │ │ └── HourlyActiveUserCollector.class
│ │ │ │ ├── inbound
│ │ │ │ │ ├── InboundCollector.class
│ │ │ │ │ ├── InboundMapper.class
│ │ │ │ │ ├── InboundReducer.class
│ │ │ │ │ ├── InboundRunner.class
│ │ │ │ │ └── bounce
│ │ │ │ │ │ ├── InboundBounceCollector.class
│ │ │ │ │ │ ├── InboundBounceMapper.class
│ │ │ │ │ │ ├── InboundBounceReducer.class
│ │ │ │ │ │ ├── InboundBounceRunner.class
│ │ │ │ │ │ ├── InboundBounceSecondSort$InboundBounceGroupingComparator.class
│ │ │ │ │ │ ├── InboundBounceSecondSort$InboundBouncePartitioner.class
│ │ │ │ │ │ └── InboundBounceSecondSort.class
│ │ │ │ ├── location
│ │ │ │ │ ├── LocationCollector.class
│ │ │ │ │ ├── LocationMapper.class
│ │ │ │ │ ├── LocationReducer.class
│ │ │ │ │ └── LocationRunner.class
│ │ │ │ ├── nm
│ │ │ │ │ ├── NewMemberCollector$1.class
│ │ │ │ │ ├── NewMemberCollector.class
│ │ │ │ │ ├── NewMemberMapper.class
│ │ │ │ │ ├── NewMemberReducer.class
│ │ │ │ │ └── NewMemberRunner.class
│ │ │ │ ├── nu
│ │ │ │ │ ├── NewInstallUserMapper.class
│ │ │ │ │ ├── NewInstallUserReducer.class
│ │ │ │ │ ├── NewInstallUserRunner.class
│ │ │ │ │ ├── StatsDeviceBrowserNewInstallUserCollector.class
│ │ │ │ │ └── StatsUserNewInstallUserCollector.class
│ │ │ │ ├── pv
│ │ │ │ │ ├── PageViewCollector.class
│ │ │ │ │ ├── PageViewMapper.class
│ │ │ │ │ ├── PageViewReducer.class
│ │ │ │ │ └── PageViewRunner.class
│ │ │ │ └── sessions
│ │ │ │ │ ├── SessionsCollector$1.class
│ │ │ │ │ ├── SessionsCollector.class
│ │ │ │ │ ├── SessionsMapper.class
│ │ │ │ │ ├── SessionsReducer.class
│ │ │ │ │ └── SessionsRunner.class
│ │ │ ├── service
│ │ │ │ ├── IDimensionConverter.class
│ │ │ │ └── impl
│ │ │ │ │ ├── DimensionConverterImpl$1.class
│ │ │ │ │ ├── DimensionConverterImpl.class
│ │ │ │ │ └── InboundDimensionService.class
│ │ │ └── util
│ │ │ │ ├── MemberUtil$1.class
│ │ │ │ ├── MemberUtil.class
│ │ │ │ ├── TimeChain.class
│ │ │ │ └── UrlUtil.class
│ │ │ └── util
│ │ │ ├── EJob$1.class
│ │ │ ├── EJob.class
│ │ │ ├── JdbcManager.class
│ │ │ └── TimeUtil.class
│ │ ├── core-site.xml
│ │ ├── hdfs-site.xml
│ │ ├── log4j.properties
│ │ ├── mapred-site.xml
│ │ ├── output-collector.xml
│ │ ├── qqwry.dat
│ │ ├── query-mapping.xml
│ │ ├── transformer-env.xml
│ │ └── yarn-site.xml
└── log_analyse_mr
│ ├── .idea
│ ├── compiler.xml
│ ├── encodings.xml
│ ├── misc.xml
│ └── workspace.xml
│ ├── log_analyse_mr.iml
│ ├── pom.xml
│ ├── src
│ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── mashibing
│ │ │ ├── common
│ │ │ ├── DateEnum.java
│ │ │ ├── EventLogConstants.java
│ │ │ ├── GlobalConstants.java
│ │ │ └── KpiType.java
│ │ │ ├── etl
│ │ │ ├── mr
│ │ │ │ └── ald
│ │ │ │ │ ├── AnalyserLogDataMapper.java
│ │ │ │ │ └── AnalyserLogDataRunner.java
│ │ │ └── util
│ │ │ │ ├── IPSeekerExt.java
│ │ │ │ ├── LoggerUtil.java
│ │ │ │ ├── UserAgentUtil.java
│ │ │ │ └── ip
│ │ │ │ └── IPSeeker.java
│ │ │ ├── transformer
│ │ │ ├── model
│ │ │ │ ├── dim
│ │ │ │ │ ├── StatsCommonDimension.java
│ │ │ │ │ ├── StatsDimension.java
│ │ │ │ │ ├── StatsUserDimension.java
│ │ │ │ │ └── base
│ │ │ │ │ │ ├── BaseDimension.java
│ │ │ │ │ │ ├── BrowserDimension.java
│ │ │ │ │ │ ├── DateDimension.java
│ │ │ │ │ │ ├── KpiDimension.java
│ │ │ │ │ │ └── PlatformDimension.java
│ │ │ │ └── value
│ │ │ │ │ ├── BaseStatsValueWritable.java
│ │ │ │ │ ├── map
│ │ │ │ │ └── TimeOutputValue.java
│ │ │ │ │ └── reduce
│ │ │ │ │ └── MapWritableValue.java
│ │ │ ├── mr
│ │ │ │ ├── IOutputCollector.java
│ │ │ │ ├── TransformerOutputFormat.java
│ │ │ │ ├── au
│ │ │ │ │ ├── ActiveUserBrowserCollector.java
│ │ │ │ │ ├── ActiveUserCollector.java
│ │ │ │ │ ├── ActiveUserMapper.java
│ │ │ │ │ ├── ActiveUserReducer.java
│ │ │ │ │ └── ActiveUserRunner.java
│ │ │ │ └── nu
│ │ │ │ │ ├── NewInstallUserMapper.java
│ │ │ │ │ ├── NewInstallUserReducer.java
│ │ │ │ │ ├── NewInstallUserRunner.java
│ │ │ │ │ ├── StatsDeviceBrowserNewInstallUserCollector.java
│ │ │ │ │ └── StatsUserNewInstallUserCollector.java
│ │ │ └── service
│ │ │ │ ├── IDimensionConverter.java
│ │ │ │ └── impl
│ │ │ │ └── DimensionConverterImpl.java
│ │ │ └── util
│ │ │ ├── EJob.java
│ │ │ ├── JdbcManager.java
│ │ │ └── TimeUtil.java
│ │ └── resource
│ │ ├── core-site.xml
│ │ ├── hdfs-site.xml
│ │ ├── log4j.properties
│ │ ├── mapred-site.xml
│ │ ├── output-collector.xml
│ │ ├── qqwry.dat
│ │ ├── query-mapping.xml
│ │ ├── transformer-env.xml
│ │ └── yarn-site.xml
│ └── target
│ └── classes
│ ├── com
│ └── mashibing
│ │ ├── common
│ │ ├── DateEnum.class
│ │ ├── EventLogConstants$EventEnum.class
│ │ ├── EventLogConstants.class
│ │ ├── GlobalConstants.class
│ │ └── KpiType.class
│ │ ├── etl
│ │ ├── mr
│ │ │ └── ald
│ │ │ │ ├── AnalyserLogDataMapper$1.class
│ │ │ │ ├── AnalyserLogDataMapper.class
│ │ │ │ └── AnalyserLogDataRunner.class
│ │ └── util
│ │ │ ├── IPSeekerExt$RegionInfo.class
│ │ │ ├── IPSeekerExt.class
│ │ │ ├── LoggerUtil.class
│ │ │ ├── UserAgentUtil$UserAgentInfo.class
│ │ │ ├── UserAgentUtil.class
│ │ │ └── ip
│ │ │ ├── IPSeeker$IPEntry.class
│ │ │ ├── IPSeeker$IPLocation.class
│ │ │ ├── IPSeeker$IPSeekerUtils.class
│ │ │ └── IPSeeker.class
│ │ ├── transformer
│ │ ├── model
│ │ │ ├── dim
│ │ │ │ ├── StatsCommonDimension.class
│ │ │ │ ├── StatsDimension.class
│ │ │ │ ├── StatsUserDimension.class
│ │ │ │ └── base
│ │ │ │ │ ├── BaseDimension.class
│ │ │ │ │ ├── BrowserDimension.class
│ │ │ │ │ ├── DateDimension.class
│ │ │ │ │ ├── KpiDimension.class
│ │ │ │ │ └── PlatformDimension.class
│ │ │ └── value
│ │ │ │ ├── BaseStatsValueWritable.class
│ │ │ │ ├── map
│ │ │ │ └── TimeOutputValue.class
│ │ │ │ └── reduce
│ │ │ │ └── MapWritableValue.class
│ │ ├── mr
│ │ │ ├── IOutputCollector.class
│ │ │ ├── TransformerOutputFormat$TransformerRecordWriter.class
│ │ │ ├── TransformerOutputFormat.class
│ │ │ ├── au
│ │ │ │ ├── ActiveUserBrowserCollector.class
│ │ │ │ ├── ActiveUserCollector.class
│ │ │ │ ├── ActiveUserMapper.class
│ │ │ │ ├── ActiveUserReducer.class
│ │ │ │ └── ActiveUserRunner.class
│ │ │ └── nu
│ │ │ │ ├── NewInstallUserMapper.class
│ │ │ │ ├── NewInstallUserReducer.class
│ │ │ │ ├── NewInstallUserRunner.class
│ │ │ │ ├── StatsDeviceBrowserNewInstallUserCollector.class
│ │ │ │ └── StatsUserNewInstallUserCollector.class
│ │ └── service
│ │ │ ├── IDimensionConverter.class
│ │ │ └── impl
│ │ │ ├── DimensionConverterImpl$1.class
│ │ │ └── DimensionConverterImpl.class
│ │ └── util
│ │ ├── EJob$1.class
│ │ ├── EJob.class
│ │ ├── JdbcManager.class
│ │ └── TimeUtil.class
│ ├── core-site.xml
│ ├── hdfs-site.xml
│ ├── log4j.properties
│ ├── mapred-site.xml
│ ├── output-collector.xml
│ ├── qqwry.dat
│ ├── query-mapping.xml
│ ├── transformer-env.xml
│ └── yarn-site.xml
└── note
├── JS SDK需求文档&设计文档.doc
├── Java SDK需求文档&设计文档 .doc
├── mysql_表设计.sql
├── nginx.conf
├── option-flume单节点案例
├── option2-flume两台连接node02配置
├── option3-flume两台连接node03配置
├── option4
├── option5
├── option6
├── project
├── sqoop
├── option
└── option2
├── statsOrder.hql
├── statsViewDepth.hql
├── view_depth_run.sh
├── 代码设计思路
├── 思路
├── 数据流图.png
├── 最终展示界面需求文档&设计文档.doc
└── 配置Nginx服务.txt
/README.md:
--------------------------------------------------------------------------------
1 | Hadoop_Project详细课程列表
2 |
3 | 第一节课 项目需求讲解及数据源分析 2019年8月8日 20:00-22:00
4 |
5 | 腾讯课堂课程编号26
6 |
7 | 知识点列表:
8 |
9 | 1、项目需求讲解
10 | 2、项目数据源分析
11 |
12 |
--------------------------------------------------------------------------------
/code/log_analyse/.idea/artifacts/log_analyse_war_exploded.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | $PROJECT_DIR$/out/artifacts/log_analyse_war_exploded
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/code/log_analyse/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/code/log_analyse/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/code/log_analyse/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/code/log_analyse/log_analyse.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/code/log_analyse/out/artifacts/log_analyse_war_exploded/WEB-INF/classes/com/msb/client/AnalyticsEngineSDK.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse/out/artifacts/log_analyse_war_exploded/WEB-INF/classes/com/msb/client/AnalyticsEngineSDK.class
--------------------------------------------------------------------------------
/code/log_analyse/out/artifacts/log_analyse_war_exploded/WEB-INF/classes/com/msb/client/SendDataMonitor$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse/out/artifacts/log_analyse_war_exploded/WEB-INF/classes/com/msb/client/SendDataMonitor$1.class
--------------------------------------------------------------------------------
/code/log_analyse/out/artifacts/log_analyse_war_exploded/WEB-INF/classes/com/msb/client/SendDataMonitor$HttpRequestUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse/out/artifacts/log_analyse_war_exploded/WEB-INF/classes/com/msb/client/SendDataMonitor$HttpRequestUtil.class
--------------------------------------------------------------------------------
/code/log_analyse/out/artifacts/log_analyse_war_exploded/WEB-INF/classes/com/msb/client/SendDataMonitor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse/out/artifacts/log_analyse_war_exploded/WEB-INF/classes/com/msb/client/SendDataMonitor.class
--------------------------------------------------------------------------------
/code/log_analyse/out/artifacts/log_analyse_war_exploded/WEB-INF/classes/com/msb/test/Test.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse/out/artifacts/log_analyse_war_exploded/WEB-INF/classes/com/msb/test/Test.class
--------------------------------------------------------------------------------
/code/log_analyse/out/artifacts/log_analyse_war_exploded/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 | log_analyse
7 |
8 | index.html
9 | index.htm
10 | index.jsp
11 | default.html
12 | default.htm
13 | default.jsp
14 |
15 |
--------------------------------------------------------------------------------
/code/log_analyse/out/artifacts/log_analyse_war_exploded/demo.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
2 |
3 |
4 |
5 |
6 | 测试页面1
7 |
8 |
9 |
10 | 测试页面1
11 | 跳转到:
12 | demo
13 | demo2
14 | demo3
15 | demo4
16 |
17 |
--------------------------------------------------------------------------------
/code/log_analyse/out/artifacts/log_analyse_war_exploded/demo2.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
2 |
3 |
4 |
5 |
6 | 测试页面2
7 |
8 |
9 |
10 | 测试页面2
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | 跳转到:
19 | demo
20 | demo2
21 | demo3
22 | demo4
23 |
24 |
--------------------------------------------------------------------------------
/code/log_analyse/out/artifacts/log_analyse_war_exploded/demo3.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
2 |
3 |
4 |
5 |
6 | 测试页面3
7 |
8 |
9 |
10 | 测试页面3
11 |
12 |
13 |
14 |
15 |
16 |
17 | 跳转到:
18 | demo
19 | demo2
20 | demo3
21 | demo4
22 |
23 |
--------------------------------------------------------------------------------
/code/log_analyse/out/artifacts/log_analyse_war_exploded/demo4.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
2 |
3 |
4 |
5 |
6 | 测试页面4
7 |
23 |
24 |
25 | 测试页面4
26 | 在本页面设置memberid为zhangsan
27 | 跳转到:
28 | demo
29 | demo2
30 | demo3
31 | demo4
32 |
33 |
--------------------------------------------------------------------------------
/code/log_analyse/out/artifacts/log_analyse_war_exploded/index.jsp:
--------------------------------------------------------------------------------
1 | <%--
2 | Created by IntelliJ IDEA.
3 | User: seanzhou
4 | Date: 2019/8/8
5 | Time: 18:45
6 | To change this template use File | Settings | File Templates.
7 | --%>
8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
9 |
10 |
11 | $Title$
12 |
13 |
14 | $END$
15 |
16 |
17 |
--------------------------------------------------------------------------------
/code/log_analyse/out/production/log_analyse/com/msb/client/AnalyticsEngineSDK.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse/out/production/log_analyse/com/msb/client/AnalyticsEngineSDK.class
--------------------------------------------------------------------------------
/code/log_analyse/out/production/log_analyse/com/msb/client/SendDataMonitor$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse/out/production/log_analyse/com/msb/client/SendDataMonitor$1.class
--------------------------------------------------------------------------------
/code/log_analyse/out/production/log_analyse/com/msb/client/SendDataMonitor$HttpRequestUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse/out/production/log_analyse/com/msb/client/SendDataMonitor$HttpRequestUtil.class
--------------------------------------------------------------------------------
/code/log_analyse/out/production/log_analyse/com/msb/client/SendDataMonitor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse/out/production/log_analyse/com/msb/client/SendDataMonitor.class
--------------------------------------------------------------------------------
/code/log_analyse/out/production/log_analyse/com/msb/test/Test.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse/out/production/log_analyse/com/msb/test/Test.class
--------------------------------------------------------------------------------
/code/log_analyse/src/com/msb/test/Test.java:
--------------------------------------------------------------------------------
1 | package com.msb.test;
2 |
3 | import com.msb.client.AnalyticsEngineSDK;
4 | public class Test {
5 | public static void main(String[] args) {
6 | AnalyticsEngineSDK.onChargeSuccess("orderid123", "zhangsan");
7 | AnalyticsEngineSDK.onChargeRefund("orderid456", "lisi");
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/code/log_analyse/web/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 | log_analyse
7 |
8 | index.html
9 | index.htm
10 | index.jsp
11 | default.html
12 | default.htm
13 | default.jsp
14 |
15 |
--------------------------------------------------------------------------------
/code/log_analyse/web/demo.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
2 |
3 |
4 |
5 |
6 | 测试页面1
7 |
8 |
9 |
10 | 测试页面1
11 | 跳转到:
12 | demo
13 | demo2
14 | demo3
15 | demo4
16 |
17 |
--------------------------------------------------------------------------------
/code/log_analyse/web/demo2.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
2 |
3 |
4 |
5 |
6 | 测试页面2
7 |
8 |
9 |
10 | 测试页面2
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | 跳转到:
19 | demo
20 | demo2
21 | demo3
22 | demo4
23 |
24 |
--------------------------------------------------------------------------------
/code/log_analyse/web/demo3.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
2 |
3 |
4 |
5 |
6 | 测试页面3
7 |
8 |
9 |
10 | 测试页面3
11 |
12 |
13 |
14 |
15 |
16 |
17 | 跳转到:
18 | demo
19 | demo2
20 | demo3
21 | demo4
22 |
23 |
--------------------------------------------------------------------------------
/code/log_analyse/web/demo4.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
2 |
3 |
4 |
5 |
6 | 测试页面4
7 |
23 |
24 |
25 | 测试页面4
26 | 在本页面设置memberid为zhangsan
27 | 跳转到:
28 | demo
29 | demo2
30 | demo3
31 | demo4
32 |
33 |
--------------------------------------------------------------------------------
/code/log_analyse/web/index.jsp:
--------------------------------------------------------------------------------
1 | <%--
2 | Created by IntelliJ IDEA.
3 | User: seanzhou
4 | Date: 2019/8/8
5 | Time: 18:45
6 | To change this template use File | Settings | File Templates.
7 | --%>
8 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
9 |
10 |
11 | $Title$
12 |
13 |
14 | $END$
15 |
16 |
17 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/log_analyse_dataclean.iml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/java/com/mashibing/common/DateEnum.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.common;
2 |
3 | /**
4 | * 日期类型枚举类
5 | *
6 | * @author 马士兵教育
7 | *
8 | */
9 | public enum DateEnum {
10 | YEAR("year"), SEASON("season"), MONTH("month"), WEEK("week"), DAY("day"), HOUR(
11 | "hour");
12 |
13 | public final String name;
14 |
15 | private DateEnum(String name) {
16 | this.name = name;
17 | }
18 |
19 | /**
20 | * 根据属性name的值获取对应的type对象
21 | *
22 | * @param name
23 | * @return
24 | */
25 | public static DateEnum valueOfName(String name) {
26 | for (DateEnum type : values()) {
27 | if (type.name.equals(name)) {
28 | return type;
29 | }
30 | }
31 | return null;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/java/com/mashibing/common/GlobalConstants.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.common;
2 |
3 | /**
4 | * 全局常量类
5 | *
6 | * @author 马士兵教育
7 | *
8 | */
9 | public class GlobalConstants {
10 |
11 | /**
12 | * 一天的毫秒数
13 | */
14 | public static final int DAY_OF_MILLISECONDS = 86400000;
15 |
16 | /**
17 | * 定义的运行时间变量名
18 | */
19 | public static final String RUNNING_DATE_PARAMES = "RUNNING_DATE";
20 |
21 | /**
22 | * 默认值
23 | */
24 | public static final String DEFAULT_VALUE = "unknown";
25 |
26 | /**
27 | * 维度信息表中指定全部列值
28 | */
29 | public static final String VALUE_OF_ALL = "all";
30 |
31 |
32 | /**
33 | * 定义的output collector的前缀
34 | */
35 | public static final String OUTPUT_COLLECTOR_KEY_PREFIX = "collector_";
36 |
37 | /**
38 | * 指定连接表配置为report
39 | */
40 | public static final String WAREHOUSE_OF_REPORT = "report";
41 |
42 | /**
43 | * 批量执行的key
44 | */
45 | public static final String JDBC_BATCH_NUMBER = "mysql.batch.number";
46 |
47 | /**
48 | * 默认批量大小
49 | */
50 | public static final String DEFAULT_JDBC_BATCH_NUMBER = "500";
51 |
52 | /**
53 | * driver 名称
54 | */
55 | public static final String JDBC_DRIVER = "mysql.%s.driver";
56 |
57 | /**
58 | * JDBC URL
59 | */
60 | public static final String JDBC_URL = "mysql.%s.url";
61 |
62 | /**
63 | * username名称
64 | */
65 | public static final String JDBC_USERNAME = "mysql.%s.username";
66 |
67 | /**
68 | * password名称
69 | */
70 | public static final String JDBC_PASSWORD = "mysql.%s.password";
71 |
72 | }
73 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/java/com/mashibing/common/KpiType.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.common;
2 |
3 | /**
4 | * 统计kpi的名称枚举类
5 | *
6 | * @author 马士兵教育
7 | *
8 | */
9 | public enum KpiType {
10 |
11 | NEW_INSTALL_USER("new_install_user"), // 统计新用户的kpi
12 | BROWSER_NEW_INSTALL_USER("browser_new_install_user"), // 统计浏览器维度的新用户kpi
13 | ACTIVE_USER("active_user"), // 统计活跃用户kpi
14 | BROWSER_ACTIVE_USER("browser_active_user"), // 统计浏览器维度的活跃用户kpi
15 | ;
16 |
17 | public final String name;
18 |
19 | private KpiType(String name) {
20 | this.name = name;
21 | }
22 |
23 | /**
24 | * 根据kpiType的名称字符串值,获取对应的kpitype枚举对象
25 | *
26 | * @param name
27 | * @return
28 | */
29 | public static KpiType valueOfName(String name) {
30 | for (KpiType type : values()) {
31 | if (type.name.equals(name)) {
32 | return type;
33 | }
34 | }
35 | throw new RuntimeException("指定的name不属于该KpiType枚举类:" + name);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/java/com/mashibing/util/JdbcManager.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.util;
2 |
3 | import java.sql.Connection;
4 | import java.sql.DriverManager;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 |
9 | import com.mashibing.common.GlobalConstants;
10 |
11 | /**
12 | * jdbc管理
13 | *
14 | * @author 马士兵教育
15 | *
16 | */
17 | public class JdbcManager {
18 | /**
19 | * 根据配置获取获取关系型数据库的jdbc连接
20 | *
21 | * @param conf
22 | * hadoop配置信息
23 | * @param flag
24 | * 区分不同数据源的标志位
25 | * @return
26 | * @throws SQLException
27 | */
28 | public static Connection getConnection(Configuration conf, String flag) throws SQLException {
29 | String driverStr = String.format(GlobalConstants.JDBC_DRIVER, flag);
30 | String urlStr = String.format(GlobalConstants.JDBC_URL, flag);
31 | String usernameStr = String.format(GlobalConstants.JDBC_USERNAME, flag);
32 | String passwordStr = String.format(GlobalConstants.JDBC_PASSWORD, flag);
33 |
34 | String driverClass = conf.get(driverStr);
35 | String url = conf.get(urlStr);
36 | String username = conf.get(usernameStr);
37 | String password = conf.get(passwordStr);
38 | try {
39 | Class.forName(driverClass);
40 | } catch (ClassNotFoundException e) {
41 | // nothing
42 | }
43 | return DriverManager.getConnection(url, username, password);
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/java/test/TestIPSeeker.java:
--------------------------------------------------------------------------------
1 | package test;
2 |
3 | import com.mashibing.etl.util.ip.IPSeeker;
4 |
5 | public class TestIPSeeker {
6 | public static void main(String[] args) {
7 | IPSeeker ipSeeker = IPSeeker.getInstance();
8 | System.out.println(ipSeeker.getCountry("120.197.87.216"));
9 | System.out.println(ipSeeker.getCountry("192.168.1.14"));
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/java/test/TestIPSeekerExt.java:
--------------------------------------------------------------------------------
1 | package test;
2 |
3 | import java.util.List;
4 |
5 | import com.mashibing.etl.util.IPSeekerExt;
6 | import com.mashibing.etl.util.IPSeekerExt.RegionInfo;
7 |
8 |
9 | public class TestIPSeekerExt {
10 | public static void main(String[] args) {
11 | IPSeekerExt ipSeekerExt = new IPSeekerExt();
12 | RegionInfo info = ipSeekerExt.analyticIp("114.114.114.114");
13 | System.out.println(info);
14 |
15 | List ips = ipSeekerExt.getAllIp();
16 | for (String ip : ips) {
17 | System.out.println(ip + " --- " + ipSeekerExt.analyticIp(ip));
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/java/test/TestLoggerUtil.java:
--------------------------------------------------------------------------------
1 | package test;
2 |
3 | import com.mashibing.etl.util.IPSeekerExt;
4 | import com.mashibing.etl.util.LoggerUtil;
5 |
6 | public class TestLoggerUtil {
7 | public static void main(String[] args) {
8 | String log = "192.168.100.102^A1449411239.595^A192.168.239.8^A/log.gif?c_time=1449411240818&oid=orderid456&u_mid=zhangsan&pl=java_server&en=e_cr&sdk=jdk&ver=1";
9 | log = "192.168.100.102^A1449587515.394^A192.168.239.8^A/log.gif?en=e_pv&p_url=http%3A%2F%2Flocalhost%3A8080%2Fbf_track_jssdk%2Fdemo2.jsp&p_ref=http%3A%2F%2Flocalhost%3A8080%2Fbf_track_jssdk%2Fdemo.jsp&tt=%E6%B5%8B%E8%AF%95%E9%A1%B5%E9%9D%A22&ver=1&pl=website&sdk=js&u_ud=948AB94A-E1A5-4EED-BBB8-CEDB74B8B4D0&u_sd=9EF5D22F-5CCD-4290-AFCA-641672988F73&c_time=1449587517241&l=zh-CN&b_iev=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F46.0.2490.71%20Safari%2F537.36&b_rst=1280*768";
10 | System.out.println(LoggerUtil.handleLog(log));
11 | System.out.println(IPSeekerExt.getInstance().getCountry("192.168.100.102"));
12 | System.out.println(IPSeekerExt.getInstance().getArea("192.168.100.102"));
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/java/test/TestUserAgentUtil.java:
--------------------------------------------------------------------------------
1 | package test;
2 |
3 | import com.mashibing.etl.util.UserAgentUtil;
4 | import com.mashibing.etl.util.UserAgentUtil.UserAgentInfo;
5 |
6 |
7 | public class TestUserAgentUtil {
8 | public static void main(String[] args) {
9 | String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36";
10 | userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; GWX:QUALIFIED; rv:11.0) like Gecko";
11 | userAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0";
12 | UserAgentInfo info = UserAgentUtil.analyticUserAgent(userAgent);
13 | System.out.println(info);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/resource/core-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 | fs.defaultFS
22 | hdfs://mycluster
23 |
24 |
25 | ha.zookeeper.quorum
26 | node02:2181,node03:2181,node04:2181
27 |
28 |
29 | hadoop.proxyuser.root.groups
30 | *
31 |
32 |
33 | hadoop.proxyuser.root.hosts
34 | *
35 |
36 |
37 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/resource/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=info,console
2 |
3 | log4j.appender.console=org.apache.log4j.ConsoleAppender
4 | log4j.appender.console.layout=org.apache.log4j.SimpleLayout
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/resource/mapred-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | mapreduce.framework.name
23 | yarn
24 |
25 |
26 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/resource/output-collector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | collector_new_install_user
6 | com.mashibing.transformer.mr.nu.StatsUserNewInstallUserCollector
7 |
8 |
9 |
10 | collector_browser_new_install_user
11 | com.mashibing.transformer.mr.nu.StatsDeviceBrowserNewInstallUserCollector
12 |
13 |
14 | collector_active_user
15 | com.mashibing.transformer.mr.au.ActiveUserCollector
16 |
17 |
18 |
19 | collector_browser_active_user
20 | com.mashibing.transformer.mr.au.ActiveUserBrowserCollector
21 |
22 |
23 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/resource/qqwry.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/src/main/resource/qqwry.dat
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/resource/query-mapping.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | new_install_user
6 |
7 | INSERT INTO `stats_user`(
8 | `platform_dimension_id`,
9 | `date_dimension_id`,
10 | `new_install_users`,
11 | `created`)
12 | VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE `new_install_users` = ?
13 |
14 |
15 |
16 |
17 | browser_new_install_user
18 |
19 | INSERT INTO `stats_device_browser`(
20 | `platform_dimension_id`,
21 | `date_dimension_id`,
22 | `browser_dimension_id`,
23 | `new_install_users`,
24 | `created`)
25 | VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `new_install_users` = ?
26 |
27 |
28 |
29 |
30 | active_user
31 |
32 | INSERT INTO `stats_user`(
33 | `platform_dimension_id`,
34 | `date_dimension_id`,
35 | `active_users`,
36 | `created`)
37 | VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE `active_users` = ?
38 |
39 |
40 |
41 |
42 | browser_active_user
43 |
44 | INSERT INTO `stats_device_browser`(
45 | `platform_dimension_id`,
46 | `date_dimension_id`,
47 | `browser_dimension_id`,
48 | `active_users`,
49 | `created`
50 | ) VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `active_users` = ?
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/resource/transformer-env.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | mysql.batch.number
6 | 10
7 |
8 |
9 |
10 | mysql.report.driver
11 | com.mysql.jdbc.Driver
12 |
13 |
14 |
15 | mysql.report.url
16 | jdbc:mysql://node12:3306/result_db?useUnicode=true&characterEncoding=utf8
17 |
18 |
19 |
20 | mysql.report.username
21 | root
22 |
23 |
24 |
25 | mysql.report.password
26 | 123456
27 |
28 |
29 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/src/main/resource/yarn-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
18 |
19 |
20 | yarn.nodemanager.aux-services
21 | mapreduce_shuffle
22 |
23 |
24 | yarn.resourcemanager.ha.enabled
25 | true
26 |
27 |
28 | yarn.resourcemanager.zk-address
29 | node02:2181,node03:2181,node04:2181
30 |
31 |
32 | yarn.resourcemanager.cluster-id
33 | mashibing
34 |
35 |
36 | yarn.resourcemanager.ha.rm-ids
37 | rm1,rm2
38 |
39 |
40 | yarn.resourcemanager.hostname.rm1
41 | node03
42 |
43 |
44 | yarn.resourcemanager.hostname.rm2
45 | node04
46 |
47 |
48 | yarn.log-aggregation-enable
49 | true
50 |
51 |
52 | yarn.log-aggregation.retain-seconds
53 | 604800
54 |
55 |
56 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/common/DateEnum.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/common/DateEnum.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/common/EventLogConstants$EventEnum.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/common/EventLogConstants$EventEnum.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/common/EventLogConstants.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/common/EventLogConstants.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/common/GlobalConstants.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/common/GlobalConstants.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/common/KpiType.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/common/KpiType.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataMapper$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataMapper$1.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/IPSeekerExt$RegionInfo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/IPSeekerExt$RegionInfo.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/IPSeekerExt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/IPSeekerExt.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/LoggerUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/LoggerUtil.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/UserAgentUtil$UserAgentInfo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/UserAgentUtil$UserAgentInfo.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/UserAgentUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/UserAgentUtil.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPEntry.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPEntry.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPLocation.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPLocation.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPSeekerUtils.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPSeekerUtils.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/ip/IPSeeker.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/etl/util/ip/IPSeeker.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/util/EJob$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/util/EJob$1.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/util/EJob.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/util/EJob.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/util/JdbcManager.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/util/JdbcManager.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/com/mashibing/util/TimeUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/com/mashibing/util/TimeUtil.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/core-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 | fs.defaultFS
22 | hdfs://mycluster
23 |
24 |
25 | ha.zookeeper.quorum
26 | node02:2181,node03:2181,node04:2181
27 |
28 |
29 | hadoop.proxyuser.root.groups
30 | *
31 |
32 |
33 | hadoop.proxyuser.root.hosts
34 | *
35 |
36 |
37 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=info,console
2 |
3 | log4j.appender.console=org.apache.log4j.ConsoleAppender
4 | log4j.appender.console.layout=org.apache.log4j.SimpleLayout
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/mapred-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | mapreduce.framework.name
23 | yarn
24 |
25 |
26 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/output-collector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | collector_new_install_user
6 | com.mashibing.transformer.mr.nu.StatsUserNewInstallUserCollector
7 |
8 |
9 |
10 | collector_browser_new_install_user
11 | com.mashibing.transformer.mr.nu.StatsDeviceBrowserNewInstallUserCollector
12 |
13 |
14 | collector_active_user
15 | com.mashibing.transformer.mr.au.ActiveUserCollector
16 |
17 |
18 |
19 | collector_browser_active_user
20 | com.mashibing.transformer.mr.au.ActiveUserBrowserCollector
21 |
22 |
23 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/qqwry.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/qqwry.dat
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/query-mapping.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | new_install_user
6 |
7 | INSERT INTO `stats_user`(
8 | `platform_dimension_id`,
9 | `date_dimension_id`,
10 | `new_install_users`,
11 | `created`)
12 | VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE `new_install_users` = ?
13 |
14 |
15 |
16 |
17 | browser_new_install_user
18 |
19 | INSERT INTO `stats_device_browser`(
20 | `platform_dimension_id`,
21 | `date_dimension_id`,
22 | `browser_dimension_id`,
23 | `new_install_users`,
24 | `created`)
25 | VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `new_install_users` = ?
26 |
27 |
28 |
29 |
30 | active_user
31 |
32 | INSERT INTO `stats_user`(
33 | `platform_dimension_id`,
34 | `date_dimension_id`,
35 | `active_users`,
36 | `created`)
37 | VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE `active_users` = ?
38 |
39 |
40 |
41 |
42 | browser_active_user
43 |
44 | INSERT INTO `stats_device_browser`(
45 | `platform_dimension_id`,
46 | `date_dimension_id`,
47 | `browser_dimension_id`,
48 | `active_users`,
49 | `created`
50 | ) VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `active_users` = ?
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/test/Sex.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/test/Sex.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/test/TestIPSeek.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/test/TestIPSeek.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/test/TestUserAgent.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_dataclean/target/classes/test/TestUserAgent.class
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/transformer-env.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | mysql.batch.number
6 | 10
7 |
8 |
9 |
10 | mysql.report.driver
11 | com.mysql.jdbc.Driver
12 |
13 |
14 |
15 | mysql.report.url
16 | jdbc:mysql://node12:3306/result_db?useUnicode=true&characterEncoding=utf8
17 |
18 |
19 |
20 | mysql.report.username
21 | root
22 |
23 |
24 |
25 | mysql.report.password
26 | 123456
27 |
28 |
29 |
--------------------------------------------------------------------------------
/code/log_analyse_dataclean/target/classes/yarn-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
18 |
19 |
20 | yarn.nodemanager.aux-services
21 | mapreduce_shuffle
22 |
23 |
24 | yarn.resourcemanager.ha.enabled
25 | true
26 |
27 |
28 | yarn.resourcemanager.zk-address
29 | node02:2181,node03:2181,node04:2181
30 |
31 |
32 | yarn.resourcemanager.cluster-id
33 | mashibing
34 |
35 |
36 | yarn.resourcemanager.ha.rm-ids
37 | rm1,rm2
38 |
39 |
40 | yarn.resourcemanager.hostname.rm1
41 | node03
42 |
43 |
44 | yarn.resourcemanager.hostname.rm2
45 | node04
46 |
47 |
48 | yarn.log-aggregation-enable
49 | true
50 |
51 |
52 | yarn.log-aggregation.retain-seconds
53 | 604800
54 |
55 |
56 |
--------------------------------------------------------------------------------
/code/log_analyse_full/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/code/log_analyse_full/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/code/log_analyse_full/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/code/log_analyse_full/log_analyse_full.iml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/common/DateEnum.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.common;
2 |
3 | /**
4 | * 日期类型枚举类
5 | *
6 | * @author 马士兵教育
7 | *
8 | */
9 | public enum DateEnum {
10 | YEAR("year"), SEASON("season"), MONTH("month"), WEEK("week"), DAY("day"), HOUR("hour");
11 |
12 | public final String name;
13 |
14 | private DateEnum(String name) {
15 | this.name = name;
16 | }
17 |
18 | /**
19 | * 根据属性name的值获取对应的type对象
20 | *
21 | * @param name
22 | * @return
23 | */
24 | public static DateEnum valueOfName(String name) {
25 | for (DateEnum type : values()) {
26 | if (type.name.equals(name)) {
27 | return type;
28 | }
29 | }
30 | return null;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/common/GlobalConstants.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.common;
2 |
3 | /**
4 | * 全局常量类
5 | *
6 | * @author 马士兵教育
7 | *
8 | */
9 | public class GlobalConstants {
10 | /**
11 | * 一天的毫秒数
12 | */
13 | public static final int DAY_OF_MILLISECONDS = 86400000;
14 | /**
15 | * 定义的运行时间变量名
16 | */
17 | public static final String RUNNING_DATE_PARAMES = "RUNNING_DATE";
18 | /**
19 | * 默认值
20 | */
21 | public static final String DEFAULT_VALUE = "unknown";
22 | /**
23 | * 维度信息表中指定全部列值
24 | */
25 | public static final String VALUE_OF_ALL = "all";
26 |
27 | /**
28 | * 定义的output collector的前缀
29 | */
30 | public static final String OUTPUT_COLLECTOR_KEY_PREFIX = "collector_";
31 |
32 | /**
33 | * 指定连接表配置为report
34 | */
35 | public static final String WAREHOUSE_OF_REPORT = "report";
36 |
37 | /**
38 | * 批量执行的key
39 | */
40 | public static final String JDBC_BATCH_NUMBER = "mysql.batch.number";
41 |
42 | /**
43 | * 默认批量大小
44 | */
45 | public static final String DEFAULT_JDBC_BATCH_NUMBER = "500";
46 |
47 | /**
48 | * driver 名称
49 | */
50 | public static final String JDBC_DRIVER = "mysql.%s.driver";
51 |
52 | /**
53 | * JDBC URL
54 | */
55 | public static final String JDBC_URL = "mysql.%s.url";
56 |
57 | /**
58 | * username名称
59 | */
60 | public static final String JDBC_USERNAME = "mysql.%s.username";
61 |
62 | /**
63 | * password名称
64 | */
65 | public static final String JDBC_PASSWORD = "mysql.%s.password";
66 |
67 | }
68 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/common/KpiType.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.common;
2 |
3 | /**
4 | * 统计kpi的名称枚举类
5 | *
6 | * @author 马士兵教育
7 | *
8 | */
9 | public enum KpiType {
10 |
11 | NEW_INSTALL_USER("new_install_user"), // 统计新用户的kpi
12 | BROWSER_NEW_INSTALL_USER("browser_new_install_user"), // 统计浏览器维度的新用户kpi
13 | ACTIVE_USER("active_user"), // 统计活跃用户kpi
14 | BROWSER_ACTIVE_USER("browser_active_user"), // 统计浏览器维度的活跃用户kpi
15 | ACTIVE_MEMBER("active_member"), // 统计活跃会员kpi
16 | BROWSER_ACTIVE_MEMBER("browser_active_member"), // 统计浏览器维度的活跃会员kpi
17 | NEW_MEMBER("new_member"), // 统计新增会员kpi
18 | BROWSER_NEW_MEMBER("browser_new_member"), // 统计浏览器维度新增会员kpi
19 | INSERT_MEMBER_INFO("insert_member_info"), // 插入会员信息kpi
20 | SESSIONS("sessions"), // 统计会话kpi
21 | BROWSER_SESSIONS("browser_sessions"), // 统计浏览器维度会话kpi
22 | HOURLY_ACTIVE_USER("hourly_active_user"), // 按小时统计活跃用户kpi
23 | HOURLY_SESSIONS("hourly_sessions"), // 按小时统计会话格式kpi
24 | HOURLY_SESSIONS_LENGTH("hourly_sessions_length"), // 按小时统计会话长度kpi
25 | WEBSITE_PAGEVIEW("website_pageview"), // 统计浏览器维度的pv kpi
26 | LOCATION("location"), // 统计地域信息维度的kpi
27 | INBOUND("inbound"), // 统计inbound维度信息的kpi
28 | INBOUND_BOUNCE("inbound_bounce"), //统计inbound维度下的跳出会话kpi
29 | ;
30 |
31 | public final String name;
32 |
33 | private KpiType(String name) {
34 | this.name = name;
35 | }
36 |
37 | /**
38 | * 根据kpiType的名称字符串值,获取对应的kpitype枚举对象
39 | *
40 | * @param name
41 | * @return
42 | */
43 | public static KpiType valueOfName(String name) {
44 | for (KpiType type : values()) {
45 | if (type.name.equals(name)) {
46 | return type;
47 | }
48 | }
49 | throw new RuntimeException("指定的name不属于该KpiType枚举类:" + name);
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/hive/DateDimensionUDF.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.hive;
2 |
3 |
4 | import java.io.IOException;
5 |
6 | import org.apache.hadoop.hive.ql.exec.UDF;
7 | import org.apache.hadoop.io.IntWritable;
8 | import org.apache.hadoop.io.Text;
9 |
10 | import com.mashibing.common.DateEnum;
11 | import com.mashibing.transformer.model.dim.base.DateDimension;
12 | import com.mashibing.transformer.service.IDimensionConverter;
13 | import com.mashibing.transformer.service.impl.DimensionConverterImpl;
14 | import com.mashibing.util.TimeUtil;
15 |
16 | /**
17 | * 操作日期dimension 相关的udf
18 | *
19 | * @author root
20 | *
21 | */
22 | public class DateDimensionUDF extends UDF {
23 | private IDimensionConverter converter = new DimensionConverterImpl();
24 |
25 |
26 |
27 | /**
28 | * 根据给定的日期(格式为:yyyy-MM-dd)至返回id
29 | *
30 | * @param day
31 | * @return
32 | */
33 | public IntWritable evaluate(Text day) {
34 | DateDimension dimension = DateDimension.buildDate(TimeUtil.parseString2Long(day.toString()), DateEnum.DAY);
35 | try {
36 | int id = this.converter.getDimensionIdByValue(dimension);
37 | return new IntWritable(id);
38 | } catch (IOException e) {
39 | throw new RuntimeException("获取id异常");
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/model/dim/StatsDimension.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.model.dim;
2 |
3 | import com.mashibing.transformer.model.dim.base.BaseDimension;
4 |
5 | public abstract class StatsDimension extends BaseDimension {
6 | // nothing
7 | }
8 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/model/dim/base/BaseDimension.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.model.dim.base;
2 |
3 | import org.apache.hadoop.io.WritableComparable;
4 |
5 | /**
6 | * 顶级的维度信息类
7 | *
8 | * @author 马士兵教育
9 | *
10 | */
11 | public abstract class BaseDimension implements WritableComparable{
12 | // nothing
13 | }
14 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/model/value/BaseStatsValueWritable.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.model.value;
2 |
3 | import com.mashibing.common.KpiType;
4 | import org.apache.hadoop.io.Writable;
5 |
6 | import com.mashibing.common.KpiType;
7 |
8 | /**
9 | * 自定义顶级的输出value父类
10 | *
11 | * @author 马士兵教育
12 | *
13 | */
14 | public abstract class BaseStatsValueWritable implements Writable {
15 | /**
16 | * 获取当前value对应的kpi值
17 | *
18 | * @return
19 | */
20 | public abstract KpiType getKpi();
21 | }
22 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/model/value/map/TimeOutputValue.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.model.value.map;
2 |
3 | import java.io.DataInput;
4 | import java.io.DataOutput;
5 | import java.io.IOException;
6 |
7 | import com.mashibing.common.KpiType;
8 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
9 |
10 | public class TimeOutputValue extends BaseStatsValueWritable {
11 | private String id; // id
12 | private long time; // 时间戳
13 |
14 | public String getId() {
15 | return id;
16 | }
17 |
18 | public void setId(String id) {
19 | this.id = id;
20 | }
21 |
22 | public long getTime() {
23 | return time;
24 | }
25 |
26 | public void setTime(long time) {
27 | this.time = time;
28 | }
29 |
30 | @Override
31 | public void write(DataOutput out) throws IOException {
32 | out.writeUTF(this.id);
33 | out.writeLong(this.time);
34 | }
35 |
36 | @Override
37 | public void readFields(DataInput in) throws IOException {
38 | this.id = in.readUTF();
39 | this.time = in.readLong();
40 | }
41 |
42 | @Override
43 | public KpiType getKpi() {
44 | // TODO Auto-generated method stub
45 | return null;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/model/value/reduce/InboundBounceReduceValue.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.model.value.reduce;
2 |
3 | import java.io.DataInput;
4 | import java.io.DataOutput;
5 | import java.io.IOException;
6 |
7 | import org.apache.hadoop.io.WritableUtils;
8 |
9 | import com.mashibing.common.KpiType;
10 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
11 |
12 | public class InboundBounceReduceValue extends BaseStatsValueWritable {
13 | private KpiType kpi;
14 | private int bounceNumber;
15 |
16 | public InboundBounceReduceValue() {
17 | super();
18 | }
19 |
20 | public InboundBounceReduceValue(int bounceNumber) {
21 | super();
22 | this.bounceNumber = bounceNumber;
23 | }
24 |
25 | public int getBounceNumber() {
26 | return bounceNumber;
27 | }
28 |
29 | public void setBounceNumber(int bounceNumber) {
30 | this.bounceNumber = bounceNumber;
31 | }
32 |
33 | public void setKpi(KpiType kpi) {
34 | this.kpi = kpi;
35 | }
36 |
37 | /**
38 | * 自增1
39 | */
40 | public void incrBounceNum() {
41 | this.bounceNumber = this.bounceNumber + 1;
42 | }
43 |
44 | @Override
45 | public void write(DataOutput out) throws IOException {
46 | out.writeInt(this.bounceNumber);
47 | WritableUtils.writeEnum(out, this.kpi);
48 | }
49 |
50 | @Override
51 | public void readFields(DataInput in) throws IOException {
52 | this.bounceNumber = in.readInt();
53 | this.kpi = WritableUtils.readEnum(in, KpiType.class);
54 | }
55 |
56 | @Override
57 | public KpiType getKpi() {
58 | return kpi;
59 | }
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/model/value/reduce/InboundReduceValue.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.model.value.reduce;
2 |
3 | import java.io.DataInput;
4 | import java.io.DataOutput;
5 | import java.io.IOException;
6 |
7 | import org.apache.hadoop.io.WritableUtils;
8 |
9 | import com.mashibing.common.KpiType;
10 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
11 |
12 | public class InboundReduceValue extends BaseStatsValueWritable {
13 | private KpiType kpi;
14 | private int uvs;
15 | private int visit;
16 |
17 | public int getUvs() {
18 | return uvs;
19 | }
20 |
21 | public void setUvs(int uvs) {
22 | this.uvs = uvs;
23 | }
24 |
25 | public int getVisit() {
26 | return visit;
27 | }
28 |
29 | public void setVisit(int visit) {
30 | this.visit = visit;
31 | }
32 |
33 | public void setKpi(KpiType kpi) {
34 | this.kpi = kpi;
35 | }
36 |
37 | @Override
38 | public void write(DataOutput out) throws IOException {
39 | out.writeInt(this.uvs);
40 | out.writeInt(this.visit);
41 | WritableUtils.writeEnum(out, this.kpi);
42 | }
43 |
44 | @Override
45 | public void readFields(DataInput in) throws IOException {
46 | this.uvs = in.readInt();
47 | this.visit = in.readInt();
48 | this.kpi = WritableUtils.readEnum(in, KpiType.class);
49 | }
50 |
51 | @Override
52 | public KpiType getKpi() {
53 | return this.kpi;
54 | }
55 |
56 | }
57 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/model/value/reduce/MapWritableValue.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.model.value.reduce;
2 |
3 | import java.io.DataInput;
4 | import java.io.DataOutput;
5 | import java.io.IOException;
6 |
7 | import org.apache.hadoop.io.MapWritable;
8 | import org.apache.hadoop.io.WritableUtils;
9 |
10 | import com.mashibing.common.KpiType;
11 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
12 |
13 | public class MapWritableValue extends BaseStatsValueWritable {
14 | private MapWritable value = new MapWritable();
15 | private KpiType kpi;
16 |
17 | public MapWritableValue() {
18 | super();
19 | }
20 |
21 | public MapWritableValue(MapWritable value, KpiType kpi) {
22 | super();
23 | this.value = value;
24 | this.kpi = kpi;
25 | }
26 |
27 | public MapWritable getValue() {
28 | return value;
29 | }
30 |
31 | public void setValue(MapWritable value) {
32 | this.value = value;
33 | }
34 |
35 | public void setKpi(KpiType kpi) {
36 | this.kpi = kpi;
37 | }
38 |
39 | @Override
40 | public void write(DataOutput out) throws IOException {
41 | this.value.write(out);
42 | WritableUtils.writeEnum(out, this.kpi);
43 | }
44 |
45 | @Override
46 | public void readFields(DataInput in) throws IOException {
47 | this.value.readFields(in);
48 | this.kpi = WritableUtils.readEnum(in, KpiType.class);
49 | }
50 |
51 | @Override
52 | public KpiType getKpi() {
53 | return this.kpi;
54 | }
55 |
56 | }
57 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/IOutputCollector.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr;
2 |
3 | import java.io.IOException;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 |
9 | import com.mashibing.transformer.model.dim.base.BaseDimension;
10 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
11 | import com.mashibing.transformer.service.IDimensionConverter;
12 |
13 | /**
14 | * 自定义的配合自定义output进行具体sql输出的类
15 | *
16 | * @author 马士兵教育
17 | *
18 | */
19 | public interface IOutputCollector {
20 |
21 | /**
22 | * 具体执行统计数据插入的方法
23 | *
24 | * @param conf
25 | * @param key
26 | * @param value
27 | * @param pstmt
28 | * @param converter
29 | * @throws SQLException
30 | * @throws IOException
31 | */
32 | public void collect(Configuration conf, BaseDimension key, BaseStatsValueWritable value, PreparedStatement pstmt, IDimensionConverter converter) throws SQLException, IOException;
33 | }
34 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/am/ActiveMemberReducer.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.am;
2 |
3 | import java.io.IOException;
4 | import java.util.HashSet;
5 | import java.util.Set;
6 |
7 | import org.apache.hadoop.io.IntWritable;
8 | import org.apache.hadoop.io.MapWritable;
9 | import org.apache.hadoop.mapreduce.Reducer;
10 |
11 | import com.mashibing.common.KpiType;
12 | import com.mashibing.transformer.model.dim.StatsUserDimension;
13 | import com.mashibing.transformer.model.value.map.TimeOutputValue;
14 | import com.mashibing.transformer.model.value.reduce.MapWritableValue;
15 |
16 | /**
17 | * mapreduce程序中计算active member的reduce类
18 | * 其实就是计算每一组中去重memberid的一个个数
19 | *
20 | * @author 马士兵教育
21 | *
22 | */
23 | public class ActiveMemberReducer extends Reducer {
24 | private Set unique = new HashSet();
25 | private MapWritableValue outputValue = new MapWritableValue();
26 | private MapWritable map = new MapWritable();
27 |
28 | @Override
29 | protected void reduce(StatsUserDimension key, Iterable values, Context context) throws IOException, InterruptedException {
30 | try {
31 | // 将memberid添加到set集合中去,方便进行统计memberid的去重个数
32 | for (TimeOutputValue value : values) {
33 | this.unique.add(value.getId());
34 | }
35 |
36 | // 设置kpi
37 | this.outputValue.setKpi(KpiType.valueOfName(key.getStatsCommon().getKpi().getKpiName()));
38 | // 设置value
39 | this.map.put(new IntWritable(-1), new IntWritable(this.unique.size()));
40 | this.outputValue.setValue(this.map);
41 |
42 | // 进行输出
43 | context.write(key, this.outputValue);
44 | } finally {
45 | // 清空操作
46 | this.unique.clear();
47 | }
48 |
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/am/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 统计active_members,规则:计算u_mid的去重个数(在各个不同维度上)
3 | *
4 | * @author 马士兵教育
5 | *
6 | */
7 | package com.mashibing.transformer.mr.am;
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/au/ActiveUserBrowserCollector.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.au;
2 |
3 | import java.io.IOException;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 | import org.apache.hadoop.io.IntWritable;
9 |
10 | import com.mashibing.common.GlobalConstants;
11 | import com.mashibing.transformer.model.dim.StatsUserDimension;
12 | import com.mashibing.transformer.model.dim.base.BaseDimension;
13 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
14 | import com.mashibing.transformer.model.value.reduce.MapWritableValue;
15 | import com.mashibing.transformer.mr.IOutputCollector;
16 | import com.mashibing.transformer.service.IDimensionConverter;
17 |
18 | public class ActiveUserBrowserCollector implements IOutputCollector {
19 |
20 | @Override
21 | public void collect(Configuration conf, BaseDimension key, BaseStatsValueWritable value, PreparedStatement pstmt, IDimensionConverter converter) throws SQLException, IOException {
22 | // 进行强制后获取对应的值
23 | StatsUserDimension statsUser = (StatsUserDimension) key;
24 | IntWritable activeUserValue = (IntWritable) ((MapWritableValue) value).getValue().get(new IntWritable(-1));
25 |
26 | // 进行参数设置
27 | int i = 0;
28 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getStatsCommon().getPlatform()));
29 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getStatsCommon().getDate()));
30 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getBrowser()));
31 | pstmt.setInt(++i, activeUserValue.get());
32 | pstmt.setString(++i, conf.get(GlobalConstants.RUNNING_DATE_PARAMES));
33 | pstmt.setInt(++i, activeUserValue.get());
34 |
35 | // 添加到batch中
36 | pstmt.addBatch();
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/au/ActiveUserCollector.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.au;
2 |
3 | import java.io.IOException;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 | import org.apache.hadoop.io.IntWritable;
9 |
10 | import com.mashibing.common.GlobalConstants;
11 | import com.mashibing.transformer.model.dim.StatsUserDimension;
12 | import com.mashibing.transformer.model.dim.base.BaseDimension;
13 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
14 | import com.mashibing.transformer.model.value.reduce.MapWritableValue;
15 | import com.mashibing.transformer.mr.IOutputCollector;
16 | import com.mashibing.transformer.service.IDimensionConverter;
17 |
18 | public class ActiveUserCollector implements IOutputCollector {
19 |
20 | @Override
21 | public void collect(Configuration conf, BaseDimension key, BaseStatsValueWritable value, PreparedStatement pstmt, IDimensionConverter converter) throws SQLException, IOException {
22 | // 进行强制后获取对应的值
23 | StatsUserDimension statsUser = (StatsUserDimension) key;
24 | IntWritable activeUserValue = (IntWritable) ((MapWritableValue) value).getValue().get(new IntWritable(-1));
25 |
26 | // 进行参数设置
27 | int i = 0;
28 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getStatsCommon().getPlatform()));
29 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getStatsCommon().getDate()));
30 | pstmt.setInt(++i, activeUserValue.get());
31 | pstmt.setString(++i, conf.get(GlobalConstants.RUNNING_DATE_PARAMES));
32 | pstmt.setInt(++i, activeUserValue.get());
33 |
34 | // 添加到batch中
35 | pstmt.addBatch();
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/au/ActiveUserCombine.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.au;
2 |
3 | import java.io.IOException;
4 |
5 | import org.apache.hadoop.mapreduce.Reducer;
6 |
7 | import com.mashibing.transformer.model.dim.StatsUserDimension;
8 | import com.mashibing.transformer.model.value.map.TimeOutputValue;
9 |
10 | /**
11 | * combine类
12 | *
13 | * @author 马士兵教育
14 | *
15 | */
16 | public class ActiveUserCombine extends Reducer {
17 | @Override
18 | protected void reduce(StatsUserDimension key, Iterable values, Context context) throws IOException, InterruptedException {
19 | for (TimeOutputValue tov : values) {
20 | context.write(key, tov);
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/inbound/InboundCollector.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.inbound;
2 |
3 | import java.io.IOException;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 |
9 | import com.mashibing.common.GlobalConstants;
10 | import com.mashibing.transformer.model.dim.StatsInboundDimension;
11 | import com.mashibing.transformer.model.dim.base.BaseDimension;
12 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
13 | import com.mashibing.transformer.model.value.reduce.InboundReduceValue;
14 | import com.mashibing.transformer.mr.IOutputCollector;
15 | import com.mashibing.transformer.service.IDimensionConverter;
16 |
17 | public class InboundCollector implements IOutputCollector {
18 |
19 | @Override
20 | public void collect(Configuration conf, BaseDimension key, BaseStatsValueWritable value, PreparedStatement pstmt, IDimensionConverter converter) throws SQLException, IOException {
21 | StatsInboundDimension inboundDimension = (StatsInboundDimension) key;
22 | InboundReduceValue inboundReduceValue = (InboundReduceValue) value;
23 |
24 | int i = 0;
25 | pstmt.setInt(++i, converter.getDimensionIdByValue(inboundDimension.getStatsCommon().getPlatform()));
26 | pstmt.setInt(++i, converter.getDimensionIdByValue(inboundDimension.getStatsCommon().getDate()));
27 | pstmt.setInt(++i, inboundDimension.getInbound().getId()); // 直接设置,在mapper类中已经设置
28 | pstmt.setInt(++i, inboundReduceValue.getUvs());
29 | pstmt.setInt(++i, inboundReduceValue.getVisit());
30 | pstmt.setString(++i, conf.get(GlobalConstants.RUNNING_DATE_PARAMES));
31 | pstmt.setInt(++i, inboundReduceValue.getUvs());
32 | pstmt.setInt(++i, inboundReduceValue.getVisit());
33 |
34 | pstmt.addBatch();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/inbound/InboundReducer.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.inbound;
2 |
3 | import java.io.IOException;
4 | import java.util.HashSet;
5 | import java.util.Set;
6 |
7 | import org.apache.hadoop.mapreduce.Reducer;
8 |
9 | import com.mashibing.common.KpiType;
10 | import com.mashibing.transformer.model.dim.StatsInboundDimension;
11 | import com.mashibing.transformer.model.value.map.TextsOutputValue;
12 | import com.mashibing.transformer.model.value.reduce.InboundReduceValue;
13 |
14 | /**
15 | * 计算reducer类
16 | *
17 | * @author 马士兵教育
18 | *
19 | */
20 | public class InboundReducer extends Reducer {
21 | private Set uvs = new HashSet();
22 | private Set visits = new HashSet();
23 | private InboundReduceValue outputValue = new InboundReduceValue();
24 |
25 | @Override
26 | protected void reduce(StatsInboundDimension key, Iterable values, Context context) throws IOException, InterruptedException {
27 | try {
28 | for (TextsOutputValue value : values) {
29 | this.uvs.add(value.getUuid());
30 | this.visits.add(value.getSid());
31 | }
32 |
33 | this.outputValue.setKpi(KpiType.valueOfName(key.getStatsCommon().getKpi().getKpiName()));
34 | this.outputValue.setUvs(this.uvs.size());
35 | this.outputValue.setVisit(this.visits.size());
36 | context.write(key, this.outputValue);
37 | } finally {
38 | // 清空操作
39 | this.uvs.clear();
40 | this.visits.clear();
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/inbound/bounce/InboundBounceCollector.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.inbound.bounce;
2 |
3 | import java.io.IOException;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 |
9 | import com.mashibing.common.GlobalConstants;
10 | import com.mashibing.transformer.model.dim.StatsInboundDimension;
11 | import com.mashibing.transformer.model.dim.base.BaseDimension;
12 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
13 | import com.mashibing.transformer.model.value.reduce.InboundBounceReduceValue;
14 | import com.mashibing.transformer.mr.IOutputCollector;
15 | import com.mashibing.transformer.service.IDimensionConverter;
16 |
17 | public class InboundBounceCollector implements IOutputCollector {
18 |
19 | @Override
20 | public void collect(Configuration conf, BaseDimension key, BaseStatsValueWritable value, PreparedStatement pstmt, IDimensionConverter converter) throws SQLException, IOException {
21 | StatsInboundDimension inboundDimension = (StatsInboundDimension) key;
22 | InboundBounceReduceValue inboundReduceValue = (InboundBounceReduceValue) value;
23 |
24 | int i = 0;
25 | pstmt.setInt(++i, converter.getDimensionIdByValue(inboundDimension.getStatsCommon().getPlatform()));
26 | pstmt.setInt(++i, converter.getDimensionIdByValue(inboundDimension.getStatsCommon().getDate()));
27 | pstmt.setInt(++i, inboundDimension.getInbound().getId()); // 直接设置,在mapper类中已经设置
28 | pstmt.setInt(++i, inboundReduceValue.getBounceNumber());
29 | pstmt.setString(++i, conf.get(GlobalConstants.RUNNING_DATE_PARAMES));
30 | pstmt.setInt(++i, inboundReduceValue.getBounceNumber());
31 |
32 | pstmt.addBatch();
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/inbound/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 计算统计inbund相关指标信息,包含活跃用户,总会话和跳出会话
3 | *
4 | * @author 马士兵教育
5 | *
6 | */
7 | package com.mashibing.transformer.mr.inbound;
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/location/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 统计location相关的指标信息,包括活跃用户、总会话个数、跳出会话个数。
3 | *
4 | * @author 马士兵教育
5 | *
6 | */
7 | package com.mashibing.transformer.mr.location;
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/nm/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 统计new member&total member信息
3 | * @author 马士兵教育
4 | *
5 | */
6 | package com.mashibing.transformer.mr.nm;
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/nu/StatsDeviceBrowserNewInstallUserCollector.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.nu;
2 |
3 | import java.io.IOException;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 | import org.apache.hadoop.io.IntWritable;
9 |
10 | import com.mashibing.common.GlobalConstants;
11 | import com.mashibing.transformer.model.dim.StatsUserDimension;
12 | import com.mashibing.transformer.model.dim.base.BaseDimension;
13 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
14 | import com.mashibing.transformer.model.value.reduce.MapWritableValue;
15 | import com.mashibing.transformer.mr.IOutputCollector;
16 | import com.mashibing.transformer.service.IDimensionConverter;
17 |
18 | public class StatsDeviceBrowserNewInstallUserCollector implements IOutputCollector {
19 |
20 | @Override
21 | public void collect(Configuration conf, BaseDimension key, BaseStatsValueWritable value, PreparedStatement pstmt, IDimensionConverter converter) throws SQLException, IOException {
22 | StatsUserDimension statsUserDimension = (StatsUserDimension) key;
23 | MapWritableValue mapWritableValue = (MapWritableValue) value;
24 | IntWritable newInstallUsers = (IntWritable) mapWritableValue.getValue().get(new IntWritable(-1));
25 |
26 | int i = 0;
27 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUserDimension.getStatsCommon().getPlatform()));
28 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUserDimension.getStatsCommon().getDate()));
29 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUserDimension.getBrowser()));
30 | pstmt.setInt(++i, newInstallUsers.get());
31 | pstmt.setString(++i, conf.get(GlobalConstants.RUNNING_DATE_PARAMES));
32 | pstmt.setInt(++i, newInstallUsers.get());
33 | pstmt.addBatch();
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/nu/StatsUserNewInstallUserCollector.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.nu;
2 |
3 | import java.io.IOException;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 | import org.apache.hadoop.io.IntWritable;
9 |
10 | import com.mashibing.common.GlobalConstants;
11 | import com.mashibing.transformer.model.dim.StatsUserDimension;
12 | import com.mashibing.transformer.model.dim.base.BaseDimension;
13 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
14 | import com.mashibing.transformer.model.value.reduce.MapWritableValue;
15 | import com.mashibing.transformer.mr.IOutputCollector;
16 | import com.mashibing.transformer.service.IDimensionConverter;
17 |
18 | public class StatsUserNewInstallUserCollector implements IOutputCollector {
19 |
20 | @Override
21 | public void collect(Configuration conf, BaseDimension key, BaseStatsValueWritable value, PreparedStatement pstmt, IDimensionConverter converter) throws SQLException, IOException {
22 | StatsUserDimension statsUserDimension = (StatsUserDimension) key;
23 | MapWritableValue mapWritableValue = (MapWritableValue) value;
24 | IntWritable newInstallUsers = (IntWritable) mapWritableValue.getValue().get(new IntWritable(-1));
25 |
26 | int i = 0;
27 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUserDimension.getStatsCommon().getPlatform()));
28 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUserDimension.getStatsCommon().getDate()));
29 | pstmt.setInt(++i, newInstallUsers.get());
30 | pstmt.setString(++i, conf.get(GlobalConstants.RUNNING_DATE_PARAMES));
31 | pstmt.setInt(++i, newInstallUsers.get());
32 | pstmt.addBatch();
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/pv/PageViewCollector.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.pv;
2 |
3 | import java.io.IOException;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 | import org.apache.hadoop.io.IntWritable;
9 |
10 | import com.mashibing.common.GlobalConstants;
11 | import com.mashibing.transformer.model.dim.StatsUserDimension;
12 | import com.mashibing.transformer.model.dim.base.BaseDimension;
13 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
14 | import com.mashibing.transformer.model.value.reduce.MapWritableValue;
15 | import com.mashibing.transformer.mr.IOutputCollector;
16 | import com.mashibing.transformer.service.IDimensionConverter;
17 |
18 | /**
19 | * 定义pageview计算的具体输出代码
20 | *
21 | * @author 马士兵教育
22 | *
23 | */
24 | public class PageViewCollector implements IOutputCollector {
25 |
26 | @Override
27 | public void collect(Configuration conf, BaseDimension key, BaseStatsValueWritable value, PreparedStatement pstmt, IDimensionConverter converter) throws SQLException, IOException {
28 | StatsUserDimension statsUser = (StatsUserDimension) key;
29 | int pv = ((IntWritable) ((MapWritableValue) value).getValue().get(new IntWritable(-1))).get();
30 |
31 | // 参数设置
32 | int i = 0;
33 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getStatsCommon().getPlatform()));
34 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getStatsCommon().getDate()));
35 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getBrowser()));
36 | pstmt.setInt(++i, pv);
37 | pstmt.setString(++i, conf.get(GlobalConstants.RUNNING_DATE_PARAMES));
38 | pstmt.setInt(++i, pv);
39 |
40 | // 加入batch
41 | pstmt.addBatch();
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/pv/PageViewReducer.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.pv;
2 |
3 | import java.io.IOException;
4 |
5 | import org.apache.hadoop.io.IntWritable;
6 | import org.apache.hadoop.io.MapWritable;
7 | import org.apache.hadoop.io.NullWritable;
8 | import org.apache.hadoop.mapreduce.Reducer;
9 |
10 | import com.mashibing.common.KpiType;
11 | import com.mashibing.transformer.model.dim.StatsUserDimension;
12 | import com.mashibing.transformer.model.value.reduce.MapWritableValue;
13 |
14 | /**
15 | * 统计website的page view数量的reducer类
16 | * 不涉及到去重,直接统计输入到reducer的同一组key中,value的个数。
17 | *
18 | * @author 马士兵教育
19 | *
20 | */
21 | public class PageViewReducer extends Reducer {
22 | private MapWritableValue mapWritableValue = new MapWritableValue();
23 | private MapWritable map = new MapWritable();
24 |
25 | @SuppressWarnings("unused")
26 | @Override
27 | protected void reduce(StatsUserDimension key, Iterable values, Context context) throws IOException, InterruptedException {
28 | int pvCount = 0;
29 | for (NullWritable value : values) {
30 | // pv++,每一条数据算一个pv,不涉及到去重
31 | pvCount++;
32 | }
33 |
34 | // 填充value
35 | this.map.put(new IntWritable(-1), new IntWritable(pvCount));
36 | this.mapWritableValue.setValue(this.map);
37 |
38 | // 填充kpi
39 | this.mapWritableValue.setKpi(KpiType.valueOfName(key.getStatsCommon().getKpi().getKpiName()));
40 |
41 | // 输出
42 | context.write(key, this.mapWritableValue);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/mr/sessions/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 计算会话个数&会话长度
3 | *
4 | * @author 马士兵教育
5 | *
6 | */
7 | package com.mashibing.transformer.mr.sessions;
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/service/IDimensionConverter.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.service;
2 |
3 | import java.io.IOException;
4 |
5 | import com.mashibing.transformer.model.dim.base.BaseDimension;
6 |
7 | /**
8 | * 提供专门操作dimension表的接口
9 | *
10 | * @author 马士兵教育
11 | *
12 | */
13 | public interface IDimensionConverter {
14 | /**
15 | * 根据dimension的value值获取id
16 | * 如果数据库中有,那么直接返回。如果没有,那么进行插入后返回新的id值
17 | *
18 | * @param dimension
19 | * @return
20 | * @throws IOException
21 | */
22 | public int getDimensionIdByValue(BaseDimension dimension) throws IOException;
23 | }
24 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/java/com/mashibing/transformer/util/UrlUtil.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.util;
2 |
3 | import java.net.MalformedURLException;
4 | import java.net.URL;
5 |
6 | /**
7 | * url工具类
8 | *
9 | * @author 马士兵教育
10 | *
11 | */
12 | public class UrlUtil {
13 | /**
14 | * 判断指定的host是否是一个有效的外链host,如果不是,那么直接返回false,如果是,返回true。
15 | *
16 | * @param host
17 | * @return
18 | */
19 | public static boolean isValidateInboundHost(String host) {
20 | if ("www.sxt.com".equals(host) || "www.isxt.com".equals(host)) {
21 | return false;
22 | }
23 | return true;
24 | }
25 |
26 | /**
27 | * 获取指定url字符串中的host
28 | *
29 | * @param url
30 | * @return
31 | * @throws MalformedURLException
32 | */
33 | public static String getHost(String url) throws MalformedURLException {
34 | URL u = getURL(url);
35 | return u.getHost();
36 | }
37 |
38 | /**
39 | * 根据字符串url创建一个URL对象
40 | *
41 | * @param url
42 | * @return
43 | * @throws MalformedURLException
44 | */
45 | public static URL getURL(String url) throws MalformedURLException {
46 | url = url.trim();
47 | if (!(url.startsWith("http:") || url.startsWith("https:"))) {
48 | url = "http://" + url;
49 | }
50 | return new URL(url);
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/resource/core-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 | fs.defaultFS
22 | hdfs://mycluster
23 |
24 |
25 | ha.zookeeper.quorum
26 | node02:2181,node03:2181,node04:2181
27 |
28 |
29 | hadoop.proxyuser.root.groups
30 | *
31 |
32 |
33 | hadoop.proxyuser.root.hosts
34 | *
35 |
36 |
37 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/resource/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=info,console
2 |
3 | log4j.appender.console=org.apache.log4j.ConsoleAppender
4 | log4j.appender.console.layout=org.apache.log4j.SimpleLayout
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/resource/mapred-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | mapreduce.framework.name
23 | yarn
24 |
25 |
26 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/resource/output-collector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | collector_new_install_user
6 | com.mashibing.transformer.mr.nu.StatsUserNewInstallUserCollector
7 |
8 |
9 |
10 | collector_browser_new_install_user
11 | com.mashibing.transformer.mr.nu.StatsDeviceBrowserNewInstallUserCollector
12 |
13 |
14 | collector_active_user
15 | com.mashibing.transformer.mr.au.ActiveUserCollector
16 |
17 |
18 |
19 | collector_browser_active_user
20 | com.mashibing.transformer.mr.au.ActiveUserBrowserCollector
21 |
22 |
23 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/resource/qqwry.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/src/main/resource/qqwry.dat
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/resource/query-mapping.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | new_install_user
6 |
7 | INSERT INTO `stats_user`(
8 | `platform_dimension_id`,
9 | `date_dimension_id`,
10 | `new_install_users`,
11 | `created`)
12 | VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE `new_install_users` = ?
13 |
14 |
15 |
16 |
17 | browser_new_install_user
18 |
19 | INSERT INTO `stats_device_browser`(
20 | `platform_dimension_id`,
21 | `date_dimension_id`,
22 | `browser_dimension_id`,
23 | `new_install_users`,
24 | `created`)
25 | VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `new_install_users` = ?
26 |
27 |
28 |
29 |
30 | active_user
31 |
32 | INSERT INTO `stats_user`(
33 | `platform_dimension_id`,
34 | `date_dimension_id`,
35 | `active_users`,
36 | `created`)
37 | VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE `active_users` = ?
38 |
39 |
40 |
41 |
42 | browser_active_user
43 |
44 | INSERT INTO `stats_device_browser`(
45 | `platform_dimension_id`,
46 | `date_dimension_id`,
47 | `browser_dimension_id`,
48 | `active_users`,
49 | `created`
50 | ) VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `active_users` = ?
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/resource/transformer-env.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | mysql.batch.number
6 | 10
7 |
8 |
9 |
10 | mysql.report.driver
11 | com.mysql.jdbc.Driver
12 |
13 |
14 |
15 | mysql.report.url
16 | jdbc:mysql://node01:3306/result_db?useUnicode=true&characterEncoding=utf8
17 |
18 |
19 |
20 | mysql.report.username
21 | root
22 |
23 |
24 |
25 | mysql.report.password
26 | 123
27 |
28 |
29 |
--------------------------------------------------------------------------------
/code/log_analyse_full/src/main/resource/yarn-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
18 |
19 |
20 | yarn.nodemanager.aux-services
21 | mapreduce_shuffle
22 |
23 |
24 | yarn.resourcemanager.ha.enabled
25 | true
26 |
27 |
28 | yarn.resourcemanager.zk-address
29 | node02:2181,node03:2181,node04:2181
30 |
31 |
32 | yarn.resourcemanager.cluster-id
33 | mashibing
34 |
35 |
36 | yarn.resourcemanager.ha.rm-ids
37 | rm1,rm2
38 |
39 |
40 | yarn.resourcemanager.hostname.rm1
41 | node03
42 |
43 |
44 | yarn.resourcemanager.hostname.rm2
45 | node04
46 |
47 |
48 | yarn.log-aggregation-enable
49 | true
50 |
51 |
52 | yarn.log-aggregation.retain-seconds
53 | 604800
54 |
55 |
56 |
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/common/DateEnum.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/common/DateEnum.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/common/EventLogConstants$EventEnum.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/common/EventLogConstants$EventEnum.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/common/EventLogConstants.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/common/EventLogConstants.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/common/GlobalConstants.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/common/GlobalConstants.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/common/KpiType.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/common/KpiType.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataMapper$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataMapper$1.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/etl/util/IPSeekerExt$RegionInfo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/etl/util/IPSeekerExt$RegionInfo.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/etl/util/IPSeekerExt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/etl/util/IPSeekerExt.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/etl/util/LoggerUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/etl/util/LoggerUtil.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/etl/util/UserAgentUtil$UserAgentInfo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/etl/util/UserAgentUtil$UserAgentInfo.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/etl/util/UserAgentUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/etl/util/UserAgentUtil.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPEntry.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPEntry.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPLocation.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPLocation.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPSeekerUtils.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPSeekerUtils.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/etl/util/ip/IPSeeker.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/etl/util/ip/IPSeeker.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/hive/DateDimensionUDF.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/hive/DateDimensionUDF.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/StatsCommonDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/StatsCommonDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/StatsDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/StatsDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/StatsInboundBounceDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/StatsInboundBounceDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/StatsInboundDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/StatsInboundDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/StatsLocationDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/StatsLocationDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/StatsUserDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/StatsUserDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/BaseDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/BaseDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/BrowserDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/BrowserDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/DateDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/DateDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/InboundDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/InboundDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/KpiDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/KpiDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/LocationDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/LocationDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/PlatformDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/dim/base/PlatformDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/BaseStatsValueWritable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/BaseStatsValueWritable.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/map/TextsOutputValue.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/map/TextsOutputValue.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/map/TimeOutputValue.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/map/TimeOutputValue.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/reduce/InboundBounceReduceValue.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/reduce/InboundBounceReduceValue.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/reduce/InboundReduceValue.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/reduce/InboundReduceValue.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/reduce/LocationReducerOutputValue.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/reduce/LocationReducerOutputValue.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/reduce/MapWritableValue.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/model/value/reduce/MapWritableValue.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/IOutputCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/IOutputCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/TransformerBaseMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/TransformerBaseMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/TransformerBaseRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/TransformerBaseRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/TransformerOutputFormat$TransformerRecordWriter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/TransformerOutputFormat$TransformerRecordWriter.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/TransformerOutputFormat.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/TransformerOutputFormat.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/am/ActiveMemberCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/am/ActiveMemberCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/am/ActiveMemberMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/am/ActiveMemberMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/am/ActiveMemberReducer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/am/ActiveMemberReducer.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/am/ActiveMemberRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/am/ActiveMemberRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserBrowserCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserBrowserCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserCombine.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserCombine.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserReducer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserReducer.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserRunner$ActiveUserPartitioner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserRunner$ActiveUserPartitioner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/ActiveUserRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/HourlyActiveUserCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/au/HourlyActiveUserCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/InboundCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/InboundCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/InboundMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/InboundMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/InboundReducer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/InboundReducer.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/InboundRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/InboundRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceReducer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceReducer.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceSecondSort$InboundBounceGroupingComparator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceSecondSort$InboundBounceGroupingComparator.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceSecondSort$InboundBouncePartitioner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceSecondSort$InboundBouncePartitioner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceSecondSort.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/inbound/bounce/InboundBounceSecondSort.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/location/LocationCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/location/LocationCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/location/LocationMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/location/LocationMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/location/LocationReducer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/location/LocationReducer.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/location/LocationRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/location/LocationRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nm/NewMemberCollector$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nm/NewMemberCollector$1.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nm/NewMemberCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nm/NewMemberCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nm/NewMemberMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nm/NewMemberMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nm/NewMemberReducer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nm/NewMemberReducer.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nm/NewMemberRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nm/NewMemberRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nu/NewInstallUserMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nu/NewInstallUserMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nu/NewInstallUserReducer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nu/NewInstallUserReducer.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nu/NewInstallUserRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nu/NewInstallUserRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nu/StatsDeviceBrowserNewInstallUserCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nu/StatsDeviceBrowserNewInstallUserCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nu/StatsUserNewInstallUserCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/nu/StatsUserNewInstallUserCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/pv/PageViewCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/pv/PageViewCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/pv/PageViewMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/pv/PageViewMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/pv/PageViewReducer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/pv/PageViewReducer.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/pv/PageViewRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/pv/PageViewRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/sessions/SessionsCollector$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/sessions/SessionsCollector$1.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/sessions/SessionsCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/sessions/SessionsCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/sessions/SessionsMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/sessions/SessionsMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/sessions/SessionsReducer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/sessions/SessionsReducer.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/sessions/SessionsRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/mr/sessions/SessionsRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/service/IDimensionConverter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/service/IDimensionConverter.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/service/impl/DimensionConverterImpl$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/service/impl/DimensionConverterImpl$1.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/service/impl/DimensionConverterImpl.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/service/impl/DimensionConverterImpl.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/service/impl/InboundDimensionService.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/service/impl/InboundDimensionService.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/util/MemberUtil$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/util/MemberUtil$1.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/util/MemberUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/util/MemberUtil.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/util/TimeChain.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/util/TimeChain.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/transformer/util/UrlUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/transformer/util/UrlUtil.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/util/EJob$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/util/EJob$1.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/util/EJob.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/util/EJob.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/util/JdbcManager.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/util/JdbcManager.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/com/mashibing/util/TimeUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/com/mashibing/util/TimeUtil.class
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/core-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 | fs.defaultFS
22 | hdfs://mycluster
23 |
24 |
25 | ha.zookeeper.quorum
26 | node02:2181,node03:2181,node04:2181
27 |
28 |
29 | hadoop.proxyuser.root.groups
30 | *
31 |
32 |
33 | hadoop.proxyuser.root.hosts
34 | *
35 |
36 |
37 |
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=info,console
2 |
3 | log4j.appender.console=org.apache.log4j.ConsoleAppender
4 | log4j.appender.console.layout=org.apache.log4j.SimpleLayout
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/mapred-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | mapreduce.framework.name
23 | yarn
24 |
25 |
26 |
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/output-collector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | collector_new_install_user
6 | com.mashibing.transformer.mr.nu.StatsUserNewInstallUserCollector
7 |
8 |
9 |
10 | collector_browser_new_install_user
11 | com.mashibing.transformer.mr.nu.StatsDeviceBrowserNewInstallUserCollector
12 |
13 |
14 | collector_active_user
15 | com.mashibing.transformer.mr.au.ActiveUserCollector
16 |
17 |
18 |
19 | collector_browser_active_user
20 | com.mashibing.transformer.mr.au.ActiveUserBrowserCollector
21 |
22 |
23 |
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/qqwry.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_full/target/classes/qqwry.dat
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/query-mapping.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | new_install_user
6 |
7 | INSERT INTO `stats_user`(
8 | `platform_dimension_id`,
9 | `date_dimension_id`,
10 | `new_install_users`,
11 | `created`)
12 | VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE `new_install_users` = ?
13 |
14 |
15 |
16 |
17 | browser_new_install_user
18 |
19 | INSERT INTO `stats_device_browser`(
20 | `platform_dimension_id`,
21 | `date_dimension_id`,
22 | `browser_dimension_id`,
23 | `new_install_users`,
24 | `created`)
25 | VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `new_install_users` = ?
26 |
27 |
28 |
29 |
30 | active_user
31 |
32 | INSERT INTO `stats_user`(
33 | `platform_dimension_id`,
34 | `date_dimension_id`,
35 | `active_users`,
36 | `created`)
37 | VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE `active_users` = ?
38 |
39 |
40 |
41 |
42 | browser_active_user
43 |
44 | INSERT INTO `stats_device_browser`(
45 | `platform_dimension_id`,
46 | `date_dimension_id`,
47 | `browser_dimension_id`,
48 | `active_users`,
49 | `created`
50 | ) VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `active_users` = ?
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/transformer-env.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | mysql.batch.number
6 | 10
7 |
8 |
9 |
10 | mysql.report.driver
11 | com.mysql.jdbc.Driver
12 |
13 |
14 |
15 | mysql.report.url
16 | jdbc:mysql://node01:3306/result_db?useUnicode=true&characterEncoding=utf8
17 |
18 |
19 |
20 | mysql.report.username
21 | root
22 |
23 |
24 |
25 | mysql.report.password
26 | 123
27 |
28 |
29 |
--------------------------------------------------------------------------------
/code/log_analyse_full/target/classes/yarn-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
18 |
19 |
20 | yarn.nodemanager.aux-services
21 | mapreduce_shuffle
22 |
23 |
24 | yarn.resourcemanager.ha.enabled
25 | true
26 |
27 |
28 | yarn.resourcemanager.zk-address
29 | node02:2181,node03:2181,node04:2181
30 |
31 |
32 | yarn.resourcemanager.cluster-id
33 | mashibing
34 |
35 |
36 | yarn.resourcemanager.ha.rm-ids
37 | rm1,rm2
38 |
39 |
40 | yarn.resourcemanager.hostname.rm1
41 | node03
42 |
43 |
44 | yarn.resourcemanager.hostname.rm2
45 | node04
46 |
47 |
48 | yarn.log-aggregation-enable
49 | true
50 |
51 |
52 | yarn.log-aggregation.retain-seconds
53 | 604800
54 |
55 |
56 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/log_analyse_mr.iml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/common/DateEnum.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.common;
2 |
3 | /**
4 | * 日期类型枚举类
5 | *
6 | * @author 马士兵教育
7 | *
8 | */
9 | public enum DateEnum {
10 | YEAR("year"), SEASON("season"), MONTH("month"), WEEK("week"), DAY("day"), HOUR(
11 | "hour");
12 |
13 | public final String name;
14 |
15 | private DateEnum(String name) {
16 | this.name = name;
17 | }
18 |
19 | /**
20 | * 根据属性name的值获取对应的type对象
21 | *
22 | * @param name
23 | * @return
24 | */
25 | public static DateEnum valueOfName(String name) {
26 | for (DateEnum type : values()) {
27 | if (type.name.equals(name)) {
28 | return type;
29 | }
30 | }
31 | return null;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/common/GlobalConstants.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.common;
2 |
3 | /**
4 | * 全局常量类
5 | *
6 | * @author 马士兵教育
7 | *
8 | */
9 | public class GlobalConstants {
10 |
11 | /**
12 | * 一天的毫秒数
13 | */
14 | public static final int DAY_OF_MILLISECONDS = 86400000;
15 |
16 | /**
17 | * 定义的运行时间变量名
18 | */
19 | public static final String RUNNING_DATE_PARAMES = "RUNNING_DATE";
20 |
21 | /**
22 | * 默认值
23 | */
24 | public static final String DEFAULT_VALUE = "unknown";
25 |
26 | /**
27 | * 维度信息表中指定全部列值
28 | */
29 | public static final String VALUE_OF_ALL = "all";
30 |
31 |
32 | /**
33 | * 定义的output collector的前缀
34 | */
35 | public static final String OUTPUT_COLLECTOR_KEY_PREFIX = "collector_";
36 |
37 | /**
38 | * 指定连接表配置为report
39 | */
40 | public static final String WAREHOUSE_OF_REPORT = "report";
41 |
42 | /**
43 | * 批量执行的key
44 | */
45 | public static final String JDBC_BATCH_NUMBER = "mysql.batch.number";
46 |
47 | /**
48 | * 默认批量大小
49 | */
50 | public static final String DEFAULT_JDBC_BATCH_NUMBER = "500";
51 |
52 | /**
53 | * driver 名称
54 | */
55 | public static final String JDBC_DRIVER = "mysql.%s.driver";
56 |
57 | /**
58 | * JDBC URL
59 | */
60 | public static final String JDBC_URL = "mysql.%s.url";
61 |
62 | /**
63 | * username名称
64 | */
65 | public static final String JDBC_USERNAME = "mysql.%s.username";
66 |
67 | /**
68 | * password名称
69 | */
70 | public static final String JDBC_PASSWORD = "mysql.%s.password";
71 |
72 | }
73 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/common/KpiType.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.common;
2 |
3 | /**
4 | * 统计kpi的名称枚举类
5 | *
6 | * @author 马士兵教育
7 | *
8 | */
9 | public enum KpiType {
10 |
11 | NEW_INSTALL_USER("new_install_user"), // 统计新用户的kpi
12 | BROWSER_NEW_INSTALL_USER("browser_new_install_user"), // 统计浏览器维度的新用户kpi
13 | ACTIVE_USER("active_user"), // 统计活跃用户kpi
14 | BROWSER_ACTIVE_USER("browser_active_user"), // 统计浏览器维度的活跃用户kpi
15 | ;
16 |
17 | public final String name;
18 |
19 | private KpiType(String name) {
20 | this.name = name;
21 | }
22 |
23 | /**
24 | * 根据kpiType的名称字符串值,获取对应的kpitype枚举对象
25 | *
26 | * @param name
27 | * @return
28 | */
29 | public static KpiType valueOfName(String name) {
30 | for (KpiType type : values()) {
31 | if (type.name.equals(name)) {
32 | return type;
33 | }
34 | }
35 | throw new RuntimeException("指定的name不属于该KpiType枚举类:" + name);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/transformer/model/dim/StatsDimension.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.model.dim;
2 |
3 | import com.mashibing.transformer.model.dim.base.BaseDimension;
4 |
5 | public abstract class StatsDimension extends BaseDimension {
6 | // nothing
7 | }
8 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/transformer/model/dim/base/BaseDimension.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.model.dim.base;
2 |
3 | import org.apache.hadoop.io.WritableComparable;
4 |
5 | /**
6 | * 顶级的维度信息类
7 | *
8 | * @author 马士兵教育
9 | *
10 | */
11 | public abstract class BaseDimension implements WritableComparable{
12 | // nothing
13 | }
14 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/transformer/model/value/BaseStatsValueWritable.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.model.value;
2 |
3 | import com.mashibing.common.KpiType;
4 | import org.apache.hadoop.io.Writable;
5 |
6 | import com.mashibing.common.KpiType;
7 |
8 | /**
9 | * 自定义顶级的输出value父类
10 | *
11 | * @author 马士兵教育
12 | *
13 | */
14 | public abstract class BaseStatsValueWritable implements Writable {
15 | /**
16 | * 获取当前value对应的kpi值
17 | *
18 | * @return
19 | */
20 | public abstract KpiType getKpi();
21 | }
22 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/transformer/model/value/map/TimeOutputValue.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.model.value.map;
2 |
3 | import java.io.DataInput;
4 | import java.io.DataOutput;
5 | import java.io.IOException;
6 |
7 | import com.mashibing.common.KpiType;
8 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
9 |
10 | public class TimeOutputValue extends BaseStatsValueWritable {
11 | private String id; // id
12 | private long time; // 时间戳
13 |
14 | public String getId() {
15 | return id;
16 | }
17 |
18 | public void setId(String id) {
19 | this.id = id;
20 | }
21 |
22 | public long getTime() {
23 | return time;
24 | }
25 |
26 | public void setTime(long time) {
27 | this.time = time;
28 | }
29 |
30 | @Override
31 | public void write(DataOutput out) throws IOException {
32 | out.writeUTF(this.id);
33 | out.writeLong(this.time);
34 | }
35 |
36 | @Override
37 | public void readFields(DataInput in) throws IOException {
38 | this.id = in.readUTF();
39 | this.time = in.readLong();
40 | }
41 |
42 | @Override
43 | public KpiType getKpi() {
44 | // TODO Auto-generated method stub
45 | return null;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/transformer/model/value/reduce/MapWritableValue.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.model.value.reduce;
2 |
3 | import java.io.DataInput;
4 | import java.io.DataOutput;
5 | import java.io.IOException;
6 |
7 | import org.apache.hadoop.io.MapWritable;
8 | import org.apache.hadoop.io.WritableUtils;
9 |
10 | import com.mashibing.common.KpiType;
11 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
12 |
13 | public class MapWritableValue extends BaseStatsValueWritable {
14 | /**
15 | *
16 | */
17 | private MapWritable value = new MapWritable();//即将插入数据库表中的一行记录
18 | private KpiType kpi;
19 |
20 | public MapWritableValue() {
21 | super();
22 | }
23 |
24 | public MapWritableValue(MapWritable value, KpiType kpi) {
25 | super();
26 | this.value = value;
27 | this.kpi = kpi;
28 | }
29 |
30 | public MapWritable getValue() {
31 | return value;
32 | }
33 |
34 | public void setValue(MapWritable value) {
35 | this.value = value;
36 | }
37 |
38 | public void setKpi(KpiType kpi) {
39 | this.kpi = kpi;
40 | }
41 |
42 | @Override
43 | public void write(DataOutput out) throws IOException {
44 | this.value.write(out);
45 | WritableUtils.writeEnum(out, this.kpi);
46 | }
47 |
48 | @Override
49 | public void readFields(DataInput in) throws IOException {
50 | this.value.readFields(in);
51 | this.kpi = WritableUtils.readEnum(in, KpiType.class);
52 | }
53 |
54 | @Override
55 | public KpiType getKpi() {
56 | return this.kpi;
57 | }
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/transformer/mr/IOutputCollector.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr;
2 |
3 | import java.io.IOException;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 |
9 | import com.mashibing.transformer.model.dim.base.BaseDimension;
10 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
11 | import com.mashibing.transformer.service.IDimensionConverter;
12 |
13 | /**
14 | * 自定义的配合自定义output进行具体sql输出的类
15 | *
16 | * @author 马士兵教育
17 | *
18 | */
19 | public interface IOutputCollector {
20 |
21 | /**
22 | * 具体执行统计数据插入的方法
23 | *
24 | * @param conf
25 | * @param key
26 | * @param value
27 | * @param pstmt
28 | * @param converter
29 | * @throws SQLException
30 | * @throws IOException
31 | */
32 | public void collect(Configuration conf, BaseDimension key, BaseStatsValueWritable value, PreparedStatement pstmt, IDimensionConverter converter) throws SQLException, IOException;
33 | }
34 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/transformer/mr/au/ActiveUserBrowserCollector.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.au;
2 |
3 | import java.io.IOException;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 | import org.apache.hadoop.io.IntWritable;
9 |
10 | import com.mashibing.common.GlobalConstants;
11 | import com.mashibing.transformer.model.dim.StatsUserDimension;
12 | import com.mashibing.transformer.model.dim.base.BaseDimension;
13 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
14 | import com.mashibing.transformer.model.value.reduce.MapWritableValue;
15 | import com.mashibing.transformer.mr.IOutputCollector;
16 | import com.mashibing.transformer.service.IDimensionConverter;
17 |
18 | /**
19 | *
20 | * @author 马士兵教育
21 | *
22 | */
23 | public class ActiveUserBrowserCollector implements IOutputCollector {
24 |
25 | @Override
26 | public void collect(Configuration conf, BaseDimension key, BaseStatsValueWritable value, PreparedStatement pstmt, IDimensionConverter converter) throws SQLException, IOException {
27 | // 进行强制后获取对应的值
28 | StatsUserDimension statsUser = (StatsUserDimension) key;
29 | IntWritable activeUserValue = (IntWritable) ((MapWritableValue) value).getValue().get(new IntWritable(-1));
30 |
31 | // 进行参数设置
32 | int i = 0;
33 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getStatsCommon().getPlatform()));
34 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getStatsCommon().getDate()));
35 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getBrowser()));
36 | pstmt.setInt(++i, activeUserValue.get());
37 | pstmt.setString(++i, conf.get(GlobalConstants.RUNNING_DATE_PARAMES));
38 | pstmt.setInt(++i, activeUserValue.get());
39 |
40 | // 添加到batch中
41 | pstmt.addBatch();
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/transformer/mr/au/ActiveUserCollector.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.au;
2 |
3 | import java.io.IOException;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 | import org.apache.hadoop.io.IntWritable;
9 |
10 | import com.mashibing.common.GlobalConstants;
11 | import com.mashibing.transformer.model.dim.StatsUserDimension;
12 | import com.mashibing.transformer.model.dim.base.BaseDimension;
13 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
14 | import com.mashibing.transformer.model.value.reduce.MapWritableValue;
15 | import com.mashibing.transformer.mr.IOutputCollector;
16 | import com.mashibing.transformer.service.IDimensionConverter;
17 |
18 | /**
19 | *
20 | * @author 马士兵教育
21 | *
22 | */
23 | public class ActiveUserCollector implements IOutputCollector {
24 |
25 | @Override
26 | public void collect(Configuration conf, BaseDimension key, BaseStatsValueWritable value,
27 | PreparedStatement pstmt, IDimensionConverter converter) throws SQLException, IOException {
28 | // 进行强制后获取对应的值
29 | StatsUserDimension statsUser = (StatsUserDimension) key;
30 | IntWritable activeUserValue = (IntWritable) ((MapWritableValue) value).getValue().get(new IntWritable(-1));
31 |
32 | // 进行参数设置
33 | int i = 0;
34 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getStatsCommon().getPlatform()));
35 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUser.getStatsCommon().getDate()));
36 | pstmt.setInt(++i, activeUserValue.get());
37 | pstmt.setString(++i, conf.get(GlobalConstants.RUNNING_DATE_PARAMES));
38 | pstmt.setInt(++i, activeUserValue.get());
39 |
40 | // 添加到batch中
41 | pstmt.addBatch();
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/transformer/mr/au/ActiveUserReducer.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.au;
2 |
3 | import java.io.IOException;
4 | import java.util.HashSet;
5 | import java.util.Set;
6 |
7 | import org.apache.hadoop.io.IntWritable;
8 | import org.apache.hadoop.io.MapWritable;
9 | import org.apache.hadoop.mapreduce.Reducer;
10 |
11 | import com.mashibing.common.KpiType;
12 | import com.mashibing.transformer.model.dim.StatsUserDimension;
13 | import com.mashibing.transformer.model.value.map.TimeOutputValue;
14 | import com.mashibing.transformer.model.value.reduce.MapWritableValue;
15 |
16 | /**
17 | * 统计active user, 其实就是计算本一组中这个uuid的个数
18 | *
19 | * @author 马士兵教育
20 | *
21 | */
22 | public class ActiveUserReducer extends
23 | Reducer {
24 |
25 | private Set unique = new HashSet();
26 | private MapWritableValue outputValue = new MapWritableValue();
27 | private MapWritable map = new MapWritable();
28 |
29 | @Override
30 | protected void reduce(StatsUserDimension key, Iterable values, Context context)
31 | throws IOException, InterruptedException {
32 | try {
33 | // 将uuid添加到set集合中去,方便进行统计uuid的去重个数
34 | for (TimeOutputValue value : values) {
35 | this.unique.add(value.getId());
36 | }
37 |
38 | // 设置kpi
39 | this.outputValue.setKpi(KpiType.valueOfName(key.getStatsCommon().getKpi().getKpiName()));
40 | // 设置value
41 | this.map.put(new IntWritable(-1), new IntWritable(this.unique.size()));
42 | this.outputValue.setValue(this.map);
43 |
44 | // 进行输出
45 | context.write(key, this.outputValue);
46 | } finally {
47 | // 清空操作
48 | this.unique.clear();
49 | }
50 |
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/transformer/mr/nu/StatsUserNewInstallUserCollector.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.mr.nu;
2 |
3 | import java.io.IOException;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 | import org.apache.hadoop.io.IntWritable;
9 |
10 | import com.mashibing.common.GlobalConstants;
11 | import com.mashibing.transformer.model.dim.StatsUserDimension;
12 | import com.mashibing.transformer.model.dim.base.BaseDimension;
13 | import com.mashibing.transformer.model.value.BaseStatsValueWritable;
14 | import com.mashibing.transformer.model.value.reduce.MapWritableValue;
15 | import com.mashibing.transformer.mr.IOutputCollector;
16 | import com.mashibing.transformer.service.IDimensionConverter;
17 |
18 | public class StatsUserNewInstallUserCollector implements IOutputCollector {
19 |
20 | @Override
21 | public void collect(Configuration conf, BaseDimension key, BaseStatsValueWritable value,
22 | PreparedStatement pstmt, IDimensionConverter converter)
23 | throws SQLException, IOException {
24 | StatsUserDimension statsUserDimension = (StatsUserDimension) key;
25 | MapWritableValue mapWritableValue = (MapWritableValue) value;
26 | IntWritable newInstallUsers = (IntWritable) mapWritableValue.getValue().get(new IntWritable(-1));
27 |
28 | int i = 0;
29 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUserDimension.getStatsCommon().getPlatform()));
30 | pstmt.setInt(++i, converter.getDimensionIdByValue(statsUserDimension.getStatsCommon().getDate()));
31 | pstmt.setInt(++i, newInstallUsers.get());
32 | pstmt.setString(++i, conf.get(GlobalConstants.RUNNING_DATE_PARAMES));
33 | pstmt.setInt(++i, newInstallUsers.get());
34 | pstmt.addBatch();//往批处理放入数据
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/transformer/service/IDimensionConverter.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.transformer.service;
2 |
3 | import java.io.IOException;
4 |
5 | import com.mashibing.transformer.model.dim.base.BaseDimension;
6 |
7 | /**
8 | * 提供专门操作(从关系型数据库中查询、插入)dimension表的接口
9 | *
10 | * @author 马士兵教育
11 | *
12 | */
13 | public interface IDimensionConverter {
14 | /**
15 | * 根据dimension的value值获取id
16 | * 如果数据库中有,那么直接返回。如果没有,那么进行插入后返回新的id值
17 | *
18 | * @param dimension
19 | * @return
20 | * @throws IOException
21 | */
22 | public int getDimensionIdByValue(BaseDimension dimension) throws IOException;
23 | }
24 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/java/com/mashibing/util/JdbcManager.java:
--------------------------------------------------------------------------------
1 | package com.mashibing.util;
2 |
3 | import java.sql.Connection;
4 | import java.sql.DriverManager;
5 | import java.sql.SQLException;
6 |
7 | import org.apache.hadoop.conf.Configuration;
8 |
9 | import com.mashibing.common.GlobalConstants;
10 |
11 | /**
12 | * jdbc管理
13 | *
14 | * @author 马士兵教育
15 | *
16 | */
17 | public class JdbcManager {
18 | /**
19 | * 根据配置获取获取关系型数据库的jdbc连接
20 | *
21 | * @param conf
22 | * hadoop配置信息
23 | * @param flag
24 | * 区分不同数据源的标志位
25 | * @return
26 | * @throws SQLException
27 | */
28 | public static Connection getConnection(Configuration conf, String flag) throws SQLException {
29 | String driverStr = String.format(GlobalConstants.JDBC_DRIVER, flag);
30 | String urlStr = String.format(GlobalConstants.JDBC_URL, flag);
31 | String usernameStr = String.format(GlobalConstants.JDBC_USERNAME, flag);
32 | String passwordStr = String.format(GlobalConstants.JDBC_PASSWORD, flag);
33 |
34 | String driverClass = conf.get(driverStr);
35 | String url = conf.get(urlStr);
36 | String username = conf.get(usernameStr);
37 | String password = conf.get(passwordStr);
38 | try {
39 | Class.forName(driverClass);
40 | } catch (ClassNotFoundException e) {
41 | // nothing
42 | }
43 | return DriverManager.getConnection(url, username, password);
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/resource/core-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 | fs.defaultFS
22 | hdfs://mycluster
23 |
24 |
25 | ha.zookeeper.quorum
26 | node02:2181,node03:2181,node04:2181
27 |
28 |
29 | hadoop.proxyuser.root.groups
30 | *
31 |
32 |
33 | hadoop.proxyuser.root.hosts
34 | *
35 |
36 |
37 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/resource/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=info,console
2 |
3 | log4j.appender.console=org.apache.log4j.ConsoleAppender
4 | log4j.appender.console.layout=org.apache.log4j.SimpleLayout
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/resource/mapred-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | mapreduce.framework.name
23 | yarn
24 |
25 |
26 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/resource/output-collector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | collector_new_install_user
6 | com.mashibing.transformer.mr.nu.StatsUserNewInstallUserCollector
7 |
8 |
9 |
10 | collector_browser_new_install_user
11 | com.mashibing.transformer.mr.nu.StatsDeviceBrowserNewInstallUserCollector
12 |
13 |
14 | collector_active_user
15 | com.mashibing.transformer.mr.au.ActiveUserCollector
16 |
17 |
18 |
19 | collector_browser_active_user
20 | com.mashibing.transformer.mr.au.ActiveUserBrowserCollector
21 |
22 |
23 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/resource/qqwry.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/src/main/resource/qqwry.dat
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/resource/query-mapping.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | new_install_user
6 |
7 | INSERT INTO `stats_user`(
8 | `platform_dimension_id`,
9 | `date_dimension_id`,
10 | `new_install_users`,
11 | `created`)
12 | VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE `new_install_users` = ?
13 |
14 |
15 |
16 |
17 | browser_new_install_user
18 |
19 | INSERT INTO `stats_device_browser`(
20 | `platform_dimension_id`,
21 | `date_dimension_id`,
22 | `browser_dimension_id`,
23 | `new_install_users`,
24 | `created`)
25 | VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `new_install_users` = ?
26 |
27 |
28 |
29 |
30 | active_user
31 |
32 | INSERT INTO `stats_user`(
33 | `platform_dimension_id`,
34 | `date_dimension_id`,
35 | `active_users`,
36 | `created`)
37 | VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE `active_users` = ?
38 |
39 |
40 |
41 |
42 | browser_active_user
43 |
44 | INSERT INTO `stats_device_browser`(
45 | `platform_dimension_id`,
46 | `date_dimension_id`,
47 | `browser_dimension_id`,
48 | `active_users`,
49 | `created`
50 | ) VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `active_users` = ?
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/resource/transformer-env.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | mysql.batch.number
6 | 10
7 |
8 |
9 |
10 | mysql.report.driver
11 | com.mysql.jdbc.Driver
12 |
13 |
14 |
15 | mysql.report.url
16 | jdbc:mysql://node01:3306/result_db?useUnicode=true&characterEncoding=utf8
17 |
18 |
19 |
20 | mysql.report.username
21 | root
22 |
23 |
24 |
25 | mysql.report.password
26 | 123
27 |
28 |
29 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/src/main/resource/yarn-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
18 |
19 |
20 | yarn.nodemanager.aux-services
21 | mapreduce_shuffle
22 |
23 |
24 | yarn.resourcemanager.ha.enabled
25 | true
26 |
27 |
28 | yarn.resourcemanager.zk-address
29 | node02:2181,node03:2181,node04:2181
30 |
31 |
32 | yarn.resourcemanager.cluster-id
33 | mashibing
34 |
35 |
36 | yarn.resourcemanager.ha.rm-ids
37 | rm1,rm2
38 |
39 |
40 | yarn.resourcemanager.hostname.rm1
41 | node03
42 |
43 |
44 | yarn.resourcemanager.hostname.rm2
45 | node04
46 |
47 |
48 | yarn.log-aggregation-enable
49 | true
50 |
51 |
52 | yarn.log-aggregation.retain-seconds
53 | 604800
54 |
55 |
56 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/common/DateEnum.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/common/DateEnum.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/common/EventLogConstants$EventEnum.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/common/EventLogConstants$EventEnum.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/common/EventLogConstants.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/common/EventLogConstants.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/common/GlobalConstants.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/common/GlobalConstants.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/common/KpiType.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/common/KpiType.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataMapper$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataMapper$1.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/etl/mr/ald/AnalyserLogDataRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/etl/util/IPSeekerExt$RegionInfo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/etl/util/IPSeekerExt$RegionInfo.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/etl/util/IPSeekerExt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/etl/util/IPSeekerExt.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/etl/util/LoggerUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/etl/util/LoggerUtil.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/etl/util/UserAgentUtil$UserAgentInfo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/etl/util/UserAgentUtil$UserAgentInfo.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/etl/util/UserAgentUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/etl/util/UserAgentUtil.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPEntry.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPEntry.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPLocation.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPLocation.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPSeekerUtils.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/etl/util/ip/IPSeeker$IPSeekerUtils.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/etl/util/ip/IPSeeker.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/etl/util/ip/IPSeeker.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/StatsCommonDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/StatsCommonDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/StatsDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/StatsDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/StatsUserDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/StatsUserDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/base/BaseDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/base/BaseDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/base/BrowserDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/base/BrowserDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/base/DateDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/base/DateDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/base/KpiDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/base/KpiDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/base/PlatformDimension.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/dim/base/PlatformDimension.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/value/BaseStatsValueWritable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/value/BaseStatsValueWritable.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/value/map/TimeOutputValue.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/value/map/TimeOutputValue.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/value/reduce/MapWritableValue.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/model/value/reduce/MapWritableValue.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/IOutputCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/IOutputCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/TransformerOutputFormat$TransformerRecordWriter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/TransformerOutputFormat$TransformerRecordWriter.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/TransformerOutputFormat.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/TransformerOutputFormat.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/au/ActiveUserBrowserCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/au/ActiveUserBrowserCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/au/ActiveUserCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/au/ActiveUserCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/au/ActiveUserMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/au/ActiveUserMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/au/ActiveUserReducer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/au/ActiveUserReducer.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/au/ActiveUserRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/au/ActiveUserRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/nu/NewInstallUserMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/nu/NewInstallUserMapper.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/nu/NewInstallUserReducer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/nu/NewInstallUserReducer.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/nu/NewInstallUserRunner.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/nu/NewInstallUserRunner.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/nu/StatsDeviceBrowserNewInstallUserCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/nu/StatsDeviceBrowserNewInstallUserCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/nu/StatsUserNewInstallUserCollector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/mr/nu/StatsUserNewInstallUserCollector.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/service/IDimensionConverter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/service/IDimensionConverter.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/service/impl/DimensionConverterImpl$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/service/impl/DimensionConverterImpl$1.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/transformer/service/impl/DimensionConverterImpl.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/transformer/service/impl/DimensionConverterImpl.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/util/EJob$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/util/EJob$1.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/util/EJob.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/util/EJob.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/util/JdbcManager.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/util/JdbcManager.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/com/mashibing/util/TimeUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/com/mashibing/util/TimeUtil.class
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/core-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 | fs.defaultFS
22 | hdfs://mycluster
23 |
24 |
25 | ha.zookeeper.quorum
26 | node02:2181,node03:2181,node04:2181
27 |
28 |
29 | hadoop.proxyuser.root.groups
30 | *
31 |
32 |
33 | hadoop.proxyuser.root.hosts
34 | *
35 |
36 |
37 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=info,console
2 |
3 | log4j.appender.console=org.apache.log4j.ConsoleAppender
4 | log4j.appender.console.layout=org.apache.log4j.SimpleLayout
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/mapred-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | mapreduce.framework.name
23 | yarn
24 |
25 |
26 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/output-collector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | collector_new_install_user
6 | com.mashibing.transformer.mr.nu.StatsUserNewInstallUserCollector
7 |
8 |
9 |
10 | collector_browser_new_install_user
11 | com.mashibing.transformer.mr.nu.StatsDeviceBrowserNewInstallUserCollector
12 |
13 |
14 | collector_active_user
15 | com.mashibing.transformer.mr.au.ActiveUserCollector
16 |
17 |
18 |
19 | collector_browser_active_user
20 | com.mashibing.transformer.mr.au.ActiveUserBrowserCollector
21 |
22 |
23 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/qqwry.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/code/log_analyse_mr/target/classes/qqwry.dat
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/query-mapping.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | new_install_user
6 |
7 | INSERT INTO `stats_user`(
8 | `platform_dimension_id`,
9 | `date_dimension_id`,
10 | `new_install_users`,
11 | `created`)
12 | VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE `new_install_users` = ?
13 |
14 |
15 |
16 |
17 | browser_new_install_user
18 |
19 | INSERT INTO `stats_device_browser`(
20 | `platform_dimension_id`,
21 | `date_dimension_id`,
22 | `browser_dimension_id`,
23 | `new_install_users`,
24 | `created`)
25 | VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `new_install_users` = ?
26 |
27 |
28 |
29 |
30 | active_user
31 |
32 | INSERT INTO `stats_user`(
33 | `platform_dimension_id`,
34 | `date_dimension_id`,
35 | `active_users`,
36 | `created`)
37 | VALUES(?, ?, ?, ?) ON DUPLICATE KEY UPDATE `active_users` = ?
38 |
39 |
40 |
41 |
42 | browser_active_user
43 |
44 | INSERT INTO `stats_device_browser`(
45 | `platform_dimension_id`,
46 | `date_dimension_id`,
47 | `browser_dimension_id`,
48 | `active_users`,
49 | `created`
50 | ) VALUES(?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `active_users` = ?
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/transformer-env.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | mysql.batch.number
6 | 10
7 |
8 |
9 |
10 | mysql.report.driver
11 | com.mysql.jdbc.Driver
12 |
13 |
14 |
15 | mysql.report.url
16 | jdbc:mysql://node01:3306/result_db?useUnicode=true&characterEncoding=utf8
17 |
18 |
19 |
20 | mysql.report.username
21 | root
22 |
23 |
24 |
25 | mysql.report.password
26 | 123
27 |
28 |
29 |
--------------------------------------------------------------------------------
/code/log_analyse_mr/target/classes/yarn-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
18 |
19 |
20 | yarn.nodemanager.aux-services
21 | mapreduce_shuffle
22 |
23 |
24 | yarn.resourcemanager.ha.enabled
25 | true
26 |
27 |
28 | yarn.resourcemanager.zk-address
29 | node02:2181,node03:2181,node04:2181
30 |
31 |
32 | yarn.resourcemanager.cluster-id
33 | mashibing
34 |
35 |
36 | yarn.resourcemanager.ha.rm-ids
37 | rm1,rm2
38 |
39 |
40 | yarn.resourcemanager.hostname.rm1
41 | node03
42 |
43 |
44 | yarn.resourcemanager.hostname.rm2
45 | node04
46 |
47 |
48 | yarn.log-aggregation-enable
49 | true
50 |
51 |
52 | yarn.log-aggregation.retain-seconds
53 | 604800
54 |
55 |
56 |
--------------------------------------------------------------------------------
/note/JS SDK需求文档&设计文档.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/note/JS SDK需求文档&设计文档.doc
--------------------------------------------------------------------------------
/note/Java SDK需求文档&设计文档 .doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/note/Java SDK需求文档&设计文档 .doc
--------------------------------------------------------------------------------
/note/option-flume单节点案例:
--------------------------------------------------------------------------------
1 | # example.conf: A single-node Flume configuration
2 |
3 | # Name the components on this agent
4 | a1.sources = r1
5 | a1.sinks = k1
6 | a1.channels = c1
7 |
8 | # Describe/configure the source
9 | a1.sources.r1.type = netcat
10 | a1.sources.r1.bind = node02
11 | a1.sources.r1.port = 44444
12 |
13 | # Describe the sink
14 | a1.sinks.k1.type = logger
15 |
16 | # Use a channel which buffers events in memory
17 | a1.channels.c1.type = memory
18 | a1.channels.c1.capacity = 1000
19 | a1.channels.c1.transactionCapacity = 100
20 |
21 | # Bind the source and sink to the channel
22 | a1.sources.r1.channels = c1
23 | a1.sinks.k1.channel = c1
24 |
25 | flume-ng agent --conf-file option --name a1 -Dflume.root.logger=INFO,console
--------------------------------------------------------------------------------
/note/option2-flume两台连接node02配置:
--------------------------------------------------------------------------------
1 | # node02
2 |
3 | # Name the components on this agent
4 | a1.sources = r1
5 | a1.sinks = k1
6 | a1.channels = c1
7 |
8 | # Describe/configure the source
9 | a1.sources.r1.type = netcat
10 | a1.sources.r1.bind = node02
11 | a1.sources.r1.port = 44444
12 |
13 | # Describe the sink
14 | a1.sinks.k1.type = avro
15 | a1.sinks.k1.hostname = node03
16 | a1.sinks.k1.port = 10086
17 |
18 | # Use a channel which buffers events in memory
19 | a1.channels.c1.type = memory
20 | a1.channels.c1.capacity = 1000
21 | a1.channels.c1.transactionCapacity = 100
22 |
23 | # Bind the source and sink to the channel
24 | a1.sources.r1.channels = c1
25 | a1.sinks.k1.channel = c1
26 |
27 | flume-ng agent --conf-file option2 --name a1 -Dflume.root.logger=INFO,console
--------------------------------------------------------------------------------
/note/option3-flume两台连接node03配置:
--------------------------------------------------------------------------------
1 | # node03
2 |
3 | # Name the components on this agent
4 | a1.sources = r1
5 | a1.sinks = k1
6 | a1.channels = c1
7 |
8 | # Describe/configure the source
9 | a1.sources.r1.type = avro
10 | a1.sources.r1.bind = node03
11 | a1.sources.r1.port = 10086
12 |
13 | # Describe the sink
14 | a1.sinks.k1.type = logger
15 |
16 | # Use a channel which buffers events in memory
17 | a1.channels.c1.type = memory
18 | a1.channels.c1.capacity = 1000
19 | a1.channels.c1.transactionCapacity = 100
20 |
21 | # Bind the source and sink to the channel
22 | a1.sources.r1.channels = c1
23 | a1.sinks.k1.channel = c1
24 |
25 | flume-ng agent --conf-file option3 --name a1 -Dflume.root.logger=INFO,console
--------------------------------------------------------------------------------
/note/option4:
--------------------------------------------------------------------------------
1 | # example.conf: A single-node Flume configuration
2 |
3 | # Name the components on this agent
4 | a1.sources = r1
5 | a1.sinks = k1
6 | a1.channels = c1
7 |
8 | # Describe/configure the source
9 | a1.sources.r1.type = exec
10 | a1.sources.r1.command = tail -F /root/log
11 |
12 | # Describe the sink
13 | a1.sinks.k1.type = logger
14 |
15 | # Use a channel which buffers events in memory
16 | a1.channels.c1.type = memory
17 | a1.channels.c1.capacity = 1000
18 | a1.channels.c1.transactionCapacity = 100
19 |
20 | # Bind the source and sink to the channel
21 | a1.sources.r1.channels = c1
22 | a1.sinks.k1.channel = c1
23 |
24 |
--------------------------------------------------------------------------------
/note/option5:
--------------------------------------------------------------------------------
1 | # example.conf: A single-node Flume configuration
2 |
3 | # Name the components on this agent
4 | a1.sources = r1
5 | a1.sinks = k1
6 | a1.channels = c1
7 |
8 | # Describe/configure the source
9 | a1.sources.r1.type = spooldir
10 | a1.sources.r1.spoolDir = /root/data/
11 | a1.sources.r1.fileSuffix=.msb
12 | a1.sources.r1.fileHeader = true
13 |
14 | # Describe the sink
15 | a1.sinks.k1.type = logger
16 |
17 | # Use a channel which buffers events in memory
18 | a1.channels.c1.type = memory
19 | a1.channels.c1.capacity = 1000
20 | a1.channels.c1.transactionCapacity = 100
21 |
22 | # Bind the source and sink to the channel
23 | a1.sources.r1.channels = c1
24 | a1.sinks.k1.channel = c1
25 |
--------------------------------------------------------------------------------
/note/option6:
--------------------------------------------------------------------------------
1 | # example.conf: A single-node Flume configuration
2 |
3 | # Name the components on this agent
4 | a1.sources = r1
5 | a1.sinks = k1
6 | a1.channels = c1
7 |
8 | # Describe/configure the source
9 | a1.sources.r1.type = netcat
10 | a1.sources.r1.bind = node02
11 | a1.sources.r1.port = 44444
12 |
13 | # Describe the sink
14 | a1.sinks.k1.type = hdfs
15 | a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S
16 | a1.sinks.k1.hdfs.filePrefix = events-
17 | a1.sinks.k1.hdfs.round = true
18 | a1.sinks.k1.hdfs.roundValue = 10
19 | a1.sinks.k1.hdfs.roundUnit = second
20 | a1.sinks.k1.hdfs.useLocalTimeStamp = true
21 |
22 | # Use a channel which buffers events in memory
23 | a1.channels.c1.type = memory
24 | a1.channels.c1.capacity = 1000
25 | a1.channels.c1.transactionCapacity = 100
26 |
27 | # Bind the source and sink to the channel
28 | a1.sources.r1.channels = c1
29 | a1.sinks.k1.channel = c1
30 |
--------------------------------------------------------------------------------
/note/project:
--------------------------------------------------------------------------------
1 | # example.conf: A single-node Flume configuration
2 |
3 | # Name the components on this agent
4 | a1.sources = r1
5 | a1.sinks = k1
6 | a1.channels = c1
7 |
8 | # Describe/configure the source
9 | a1.sources.r1.type = exec
10 | a1.sources.r1.command = tail -F /opt/data/access.log
11 |
12 | # Describe the sink
13 | a1.sinks.k1.type = hdfs
14 | a1.sinks.k1.hdfs.path = /project/%Y%m%d
15 | a1.sinks.k1.hdfs.filePrefix = log-
16 | a1.sinks.k1.hdfs.rollInterval = 0
17 | a1.sinks.k1.hdfs.rollSize = 10240
18 | a1.sinks.k1.hdfs.rollCount = 0
19 | a1.sinks.k1.hdfs.idleTimeout = 30
20 | a1.sinks.k1.hdfs.fileType = DataStream
21 | a1.sinks.k1.hdfs.callTimeout = 60000
22 | a1.sinks.k1.hdfs.useLocalTimeStamp = true
23 |
24 | # Use a channel which buffers events in memory
25 | a1.channels.c1.type = memory
26 | a1.channels.c1.capacity = 1000
27 | a1.channels.c1.transactionCapacity = 100
28 |
29 | # Bind the source and sink to the channel
30 | a1.sources.r1.channels = c1
31 | a1.sinks.k1.channel = c1
32 |
--------------------------------------------------------------------------------
/note/sqoop/option:
--------------------------------------------------------------------------------
1 | import
2 | --connect
3 | jdbc:mysql://node01:3306/result_db
4 | --username
5 | root
6 | --password
7 | 123
8 | --as-textfile
9 | --columns
10 | id,browser_name,browser_version
11 | --delete-target-dir
12 | -m
13 | 1
14 | --table
15 | dimension_browser
16 | --target-dir
17 | /sqoop
18 |
--------------------------------------------------------------------------------
/note/sqoop/option2:
--------------------------------------------------------------------------------
1 | import
2 | --connect
3 | jdbc:mysql://node01:3306/result_db
4 | --username
5 | root
6 | --password
7 | 123
8 | --as-textfile
9 | --delete-target-dir
10 | -m
11 | 1
12 | --target-dir
13 | /sqoop
14 | -e
15 | select * from dimension_browser where id > 20 and $CONDITIONS
16 |
--------------------------------------------------------------------------------
/note/思路:
--------------------------------------------------------------------------------
1 | 输出格式化类的实现:
2 | outputformat:
3 | getRecordWriter()
4 | 得到一个RecordWriter的对象,此对象一般需要自己实现
5 | RecordWriter:
6 | close()
7 | write()
8 |
9 | 整体思路:
10 | 用户基本信息模块中包含新增用户:
11 | 浏览器分析模块中也包含新增用户:
12 | 思考:如何将两个MR合并成同一个MR?
13 | MR的原语是:
14 | map:将数据变成K_V键值对的组合
15 | 项目中:
16 | key:
17 | 维度组合
18 | value:
19 | 存储值得自定义对象(uuid,time)
20 | reduce:将相同的key合并为一组
21 | 项目中:需要考虑去重
22 | key:
23 | 维度组合
24 | value:
25 | 保存的是具体的值以及向哪张表插入数据
26 |
27 | map:
28 | 1、首先从hbase中获取需要的字段信息(6)
29 | 2、根据取出的字段值创建单一的维度对象
30 | 3、根据不同的模块进行单一维度对象的组合
31 | 4、将维度对象组合和value进行输出
32 | reduce:
33 | 1、创建去重集合
34 | 2、将迭代器中的值进行添加去重操作
35 | 3、设置向哪张表中添加数据
36 | 4、直接向mysql中插入数据
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/note/数据流图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/note/数据流图.png
--------------------------------------------------------------------------------
/note/最终展示界面需求文档&设计文档.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/note/最终展示界面需求文档&设计文档.doc
--------------------------------------------------------------------------------
/note/配置Nginx服务.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msbbigdata/hadoop_project/a3ae85c6c65f0a29d7d1b695219469c7d0daa2b1/note/配置Nginx服务.txt
--------------------------------------------------------------------------------