随机抽取算法实现

随机抽取算法实现
main
oeljeklaus-you 7 years ago
parent a5f6276f2f
commit 69a0490f06

@ -2,10 +2,13 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="a7505764-040b-48e2-b2fc-8c5b579e595f" name="Default" comment="">
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionRandomExtractDao.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionRandomExtractDaoImpl.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionDetail.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionRandomExtract.java" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/SessionAggrStatAccumulator.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/SessionAggrStatAccumulator.java" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/constant/Constants.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/constant/Constants.java" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java" />
</list>
<ignored path="$PROJECT_DIR$/out/" />
<ignored path="$PROJECT_DIR$/target/" />
@ -21,83 +24,37 @@
<file leaf-file-name="UserVisitAnalyze.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330">
<caret line="388" column="94" lean-forward="false" selection-start-line="388" selection-start-column="94" selection-end-line="388" selection-end-column="94" />
<state relative-caret-position="539">
<caret line="378" column="27" lean-forward="true" selection-start-line="378" selection-start-column="27" selection-end-line="378" selection-end-column="27" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#4667#4892#0" expanded="true" />
<element signature="e#4891#4892#0" expanded="true" />
<element signature="e#5122#7873#0" expanded="true" />
<element signature="e#7872#7873#0" expanded="true" />
<element signature="e#8093#8316#0" expanded="true" />
<element signature="e#8315#8316#0" expanded="true" />
<element signature="e#8569#9583#0" expanded="true" />
<element signature="e#9582#9583#0" expanded="true" />
<element signature="e#4882#5107#0" expanded="true" />
<element signature="e#5106#5107#0" expanded="true" />
<element signature="e#5337#8133#0" expanded="true" />
<element signature="e#8132#8133#0" expanded="true" />
<element signature="e#8353#8576#0" expanded="true" />
<element signature="e#8575#8576#0" expanded="true" />
<element signature="e#8829#9843#0" expanded="true" />
<element signature="e#9842#9843#0" expanded="true" />
<element signature="e#16022#16546#0" expanded="true" />
<element signature="e#16545#16546#0" expanded="true" />
<element signature="e#16787#16814#0" expanded="true" />
<element signature="e#17590#17623#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Accumulable.class" pinned="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-core_2.10/1.5.1/spark-core_2.10-1.5.1.jar!/org/apache/spark/Accumulable.class">
<file leaf-file-name="Constants.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/constant/Constants.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
<caret line="62" column="0" lean-forward="false" selection-start-line="62" selection-start-column="0" selection-end-line="62" selection-end-column="0" />
<state relative-caret-position="494">
<caret line="26" column="47" lean-forward="false" selection-start-line="26" selection-start-column="31" selection-end-line="26" selection-end-column="47" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SessionAggrStatAccumulator.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/SessionAggrStatAccumulator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="473">
<caret line="41" column="46" lean-forward="true" selection-start-line="41" selection-start-column="46" selection-end-line="41" selection-end-column="46" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#294#295#0" expanded="true" />
<element signature="e#326#327#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="StringUtils.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/StringUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="156">
<caret line="15" column="0" lean-forward="false" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
<folding>
<element signature="e#247#248#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SessionAggrDao.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionAggrDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="152">
<caret line="8" column="18" lean-forward="false" selection-start-line="8" selection-start-column="16" selection-end-line="8" selection-end-column="20" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="MockData.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/mockData/MockData.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1177">
<caret line="93" column="49" lean-forward="false" selection-start-line="93" selection-start-column="49" selection-end-line="93" selection-end-column="49" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
@ -139,7 +96,6 @@
<option value="$PROJECT_DIR$/src/test/java/cn/edu/hust/utils/ParamUtilsTest.java" />
<option value="$PROJECT_DIR$/pom.xml" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/constant/Constants.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionAggrStatDao.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionAggrStat.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionAggrStatDaoImpl.java" />
@ -147,6 +103,13 @@
<option value="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionAggrDao.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/SessionAggrStatAccumulator.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/constant/Constants.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionRadomExtract.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionRadomExtractDao.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionRandomExtract.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionDetail.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionRandomExtractDao.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionRandomExtractDaoImpl.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" />
</list>
</option>
@ -253,6 +216,24 @@
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="hust" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="UserActionAnalyzePlatform" type="b2602c69:ProjectViewProjectNode" />
<item name="UserActionAnalyzePlatform" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="hust" type="462c0819:PsiDirectoryNode" />
<item name="constant" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="UserActionAnalyzePlatform" type="b2602c69:ProjectViewProjectNode" />
<item name="UserActionAnalyzePlatform" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="hust" type="462c0819:PsiDirectoryNode" />
<item name="domain" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="UserActionAnalyzePlatform" type="b2602c69:ProjectViewProjectNode" />
<item name="UserActionAnalyzePlatform" type="462c0819:PsiDirectoryNode" />
@ -292,7 +273,7 @@
<property name="settings.editor.selected.configurable" value="MavenSettings" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="SearchEverywhereHistoryKey" value="&#9;FILE&#9;file:///Users/youyujie/Documents/UserActionAnalyzePlatform/src/main/java/cn/edu/hust/jdbc/JDBCHelper.java" />
<property name="SearchEverywhereHistoryKey" value="wor&#9;FILE&#9;file:///Users/youyujie/Documents/UserActionAnalyzePlatform/.idea/libraries/Maven__org_apache_curator_curator_framework_2_4_0.xml" />
</component>
<component name="RecentsManager">
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
@ -551,7 +532,7 @@
<workItem from="1529590333052" duration="2564000" />
<workItem from="1529630336674" duration="15098000" />
<workItem from="1529666057370" duration="13151000" />
<workItem from="1529717692529" duration="3409000" />
<workItem from="1529717692529" duration="8174000" />
</task>
<task id="LOCAL-00001" summary="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成">
<created>1529592741848</created>
@ -603,7 +584,7 @@
</history-entry>
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="35256000" />
<option name="totallyTimeSpent" value="40021000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="0" width="1440" height="900" extended-state="0" />
@ -619,7 +600,7 @@
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32904884" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
@ -707,142 +688,11 @@
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java</url>
<line>93</line>
<properties />
<option name="timeStamp" value="4" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java</url>
<line>309</line>
<properties />
<option name="timeStamp" value="6" />
</line-breakpoint>
</breakpoints>
<option name="time" value="7" />
</breakpoint-manager>
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#4667#4892#0" expanded="true" />
<element signature="e#4891#4892#0" expanded="true" />
<element signature="e#5122#7873#0" expanded="true" />
<element signature="e#7872#7873#0" expanded="true" />
<element signature="e#8093#8316#0" expanded="true" />
<element signature="e#8315#8316#0" expanded="true" />
<element signature="e#8569#9583#0" expanded="true" />
<element signature="e#9582#9583#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionAggrStat.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1596">
<caret line="114" column="27" lean-forward="false" selection-start-line="114" selection-start-column="27" selection-end-line="114" selection-end-column="27" />
<folding>
<element signature="e#2125#2126#0" expanded="true" />
<element signature="e#2154#2155#0" expanded="true" />
<element signature="e#2196#2197#0" expanded="true" />
<element signature="e#2232#2233#0" expanded="true" />
<element signature="e#2269#2270#0" expanded="true" />
<element signature="e#2304#2305#0" expanded="true" />
<element signature="e#2358#2359#0" expanded="true" />
<element signature="e#2401#2402#0" expanded="true" />
<element signature="e#2446#2447#0" expanded="true" />
<element signature="e#2487#2488#0" expanded="true" />
<element signature="e#2555#2556#0" expanded="true" />
<element signature="e#2615#2616#0" expanded="true" />
<element signature="e#2660#2661#0" expanded="true" />
<element signature="e#2701#2702#0" expanded="true" />
<element signature="e#2769#2770#0" expanded="true" />
<element signature="e#2829#2830#0" expanded="true" />
<element signature="e#2874#2875#0" expanded="true" />
<element signature="e#2915#2916#0" expanded="true" />
<element signature="e#2983#2984#0" expanded="true" />
<element signature="e#3043#3044#0" expanded="true" />
<element signature="e#3090#3091#0" expanded="true" />
<element signature="e#3133#3134#0" expanded="true" />
<element signature="e#3316#3317#0" expanded="true" />
<element signature="e#3359#3360#0" expanded="true" />
<element signature="e#3540#3541#0" expanded="true" />
<element signature="e#3581#3582#0" expanded="true" />
<element signature="e#3649#3650#0" expanded="true" />
<element signature="e#3709#3710#0" expanded="true" />
<element signature="e#3755#3756#0" expanded="true" />
<element signature="e#3797#3798#0" expanded="true" />
<element signature="e#3865#3866#0" expanded="true" />
<element signature="e#3926#3927#0" expanded="true" />
<element signature="e#3973#3974#0" expanded="true" />
<element signature="e#4016#4017#0" expanded="true" />
<element signature="e#4195#4196#0" expanded="true" />
<element signature="e#4234#4235#0" expanded="true" />
<element signature="e#4298#4299#0" expanded="true" />
<element signature="e#4354#4355#0" expanded="true" />
<element signature="e#4396#4397#0" expanded="true" />
<element signature="e#4434#4435#0" expanded="true" />
<element signature="e#4496#4497#0" expanded="true" />
<element signature="e#4550#4551#0" expanded="true" />
<element signature="e#4592#4593#0" expanded="true" />
<element signature="e#4630#4631#0" expanded="true" />
<element signature="e#4692#4693#0" expanded="true" />
<element signature="e#4746#4747#0" expanded="true" />
<element signature="e#4788#4789#0" expanded="true" />
<element signature="e#4826#4827#0" expanded="true" />
<element signature="e#4888#4889#0" expanded="true" />
<element signature="e#4942#4943#0" expanded="true" />
<element signature="e#4986#4987#0" expanded="true" />
<element signature="e#5026#5027#0" expanded="true" />
<element signature="e#5092#5093#0" expanded="true" />
<element signature="e#5150#5151#0" expanded="true" />
<element signature="e#5194#5195#0" expanded="true" />
<element signature="e#5234#5235#0" expanded="true" />
<element signature="e#5300#5301#0" expanded="true" />
<element signature="e#5358#5359#0" expanded="true" />
<element signature="e#5399#5400#0" expanded="true" />
<element signature="e#5436#5437#0" expanded="true" />
<element signature="e#5496#5497#0" expanded="true" />
<element signature="e#5548#5549#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionAggrDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="114">
<caret line="8" column="18" lean-forward="true" selection-start-line="8" selection-start-column="16" selection-end-line="8" selection-end-column="20" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionAggrStatDaoImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="304">
<caret line="18" column="58" lean-forward="false" selection-start-line="18" selection-start-column="58" selection-end-line="18" selection-end-column="58" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2451">
<caret line="138" column="20" lean-forward="false" selection-start-line="138" selection-start-column="20" selection-end-line="138" selection-end-column="20" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/constant/Constants.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1045">
@ -887,6 +737,40 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="152">
<caret line="8" column="28" lean-forward="false" selection-start-line="8" selection-start-column="19" selection-end-line="8" selection-end-column="28" />
<folding>
<element signature="e#847#848#0" expanded="false" />
<element signature="e#876#877#0" expanded="false" />
<element signature="e#918#919#0" expanded="false" />
<element signature="e#954#955#0" expanded="false" />
<element signature="e#989#990#0" expanded="false" />
<element signature="e#1020#1021#0" expanded="false" />
<element signature="e#1068#1069#0" expanded="false" />
<element signature="e#1108#1109#0" expanded="false" />
<element signature="e#1145#1146#0" expanded="false" />
<element signature="e#1178#1179#0" expanded="false" />
<element signature="e#1230#1231#0" expanded="false" />
<element signature="e#1274#1275#0" expanded="false" />
<element signature="e#1310#1311#0" expanded="false" />
<element signature="e#1342#1343#0" expanded="false" />
<element signature="e#1392#1393#0" expanded="false" />
<element signature="e#1434#1435#0" expanded="false" />
<element signature="e#1471#1472#0" expanded="false" />
<element signature="e#1504#1505#0" expanded="false" />
<element signature="e#1556#1557#0" expanded="false" />
<element signature="e#1600#1601#0" expanded="false" />
<element signature="e#1635#1636#0" expanded="false" />
<element signature="e#1666#1667#0" expanded="false" />
<element signature="e#1714#1715#0" expanded="false" />
<element signature="e#1754#1755#0" expanded="false" />
<element signature="e#1791#1792#0" expanded="false" />
<element signature="e#1824#1825#0" expanded="false" />
<element signature="e#1876#1877#0" expanded="false" />
<element signature="e#1920#1921#0" expanded="false" />
<element signature="e#1956#1957#0" expanded="false" />
<element signature="e#1988#1989#0" expanded="false" />
<element signature="e#2038#2039#0" expanded="false" />
<element signature="e#2080#2081#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -1006,6 +890,40 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="114">
<caret line="8" column="28" lean-forward="false" selection-start-line="8" selection-start-column="19" selection-end-line="8" selection-end-column="28" />
<folding>
<element signature="e#847#848#0" expanded="false" />
<element signature="e#876#877#0" expanded="false" />
<element signature="e#918#919#0" expanded="false" />
<element signature="e#954#955#0" expanded="false" />
<element signature="e#989#990#0" expanded="false" />
<element signature="e#1020#1021#0" expanded="false" />
<element signature="e#1068#1069#0" expanded="false" />
<element signature="e#1108#1109#0" expanded="false" />
<element signature="e#1145#1146#0" expanded="false" />
<element signature="e#1178#1179#0" expanded="false" />
<element signature="e#1230#1231#0" expanded="false" />
<element signature="e#1274#1275#0" expanded="false" />
<element signature="e#1310#1311#0" expanded="false" />
<element signature="e#1342#1343#0" expanded="false" />
<element signature="e#1392#1393#0" expanded="false" />
<element signature="e#1434#1435#0" expanded="false" />
<element signature="e#1471#1472#0" expanded="false" />
<element signature="e#1504#1505#0" expanded="false" />
<element signature="e#1556#1557#0" expanded="false" />
<element signature="e#1600#1601#0" expanded="false" />
<element signature="e#1635#1636#0" expanded="false" />
<element signature="e#1666#1667#0" expanded="false" />
<element signature="e#1714#1715#0" expanded="false" />
<element signature="e#1754#1755#0" expanded="false" />
<element signature="e#1791#1792#0" expanded="false" />
<element signature="e#1824#1825#0" expanded="false" />
<element signature="e#1876#1877#0" expanded="false" />
<element signature="e#1920#1921#0" expanded="false" />
<element signature="e#1956#1957#0" expanded="false" />
<element signature="e#1988#1989#0" expanded="false" />
<element signature="e#2038#2039#0" expanded="false" />
<element signature="e#2080#2081#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -1034,6 +952,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380">
<caret line="27" column="55" lean-forward="false" selection-start-line="27" selection-start-column="55" selection-end-line="27" selection-end-column="55" />
<folding />
</state>
</provider>
</entry>
@ -1093,14 +1012,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/constant/Constants.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="125">
<caret line="45" column="63" lean-forward="true" selection-start-line="45" selection-start-column="63" selection-end-line="45" selection-end-column="63" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/mockData/MockData.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1177">
@ -1119,27 +1030,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="470">
<caret line="142" column="26" lean-forward="false" selection-start-line="142" selection-start-column="26" selection-end-line="142" selection-end-column="26" />
<folding>
<element signature="e#486#642#0" expanded="true" />
<element signature="e#641#642#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionAggrDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="152">
<caret line="8" column="18" lean-forward="false" selection-start-line="8" selection-start-column="16" selection-end-line="8" selection-end-column="20" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionAggrStatDaoImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342">
@ -1252,6 +1142,25 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/constant/Constants.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="494">
<caret line="26" column="47" lean-forward="false" selection-start-line="26" selection-start-column="31" selection-end-line="26" selection-end-column="47" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="52">
<caret line="79" column="31" lean-forward="true" selection-start-line="79" selection-start-column="31" selection-end-line="79" selection-end-column="31" />
<folding>
<element signature="e#486#642#0" expanded="true" />
<element signature="e#641#642#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/StringUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="156">
@ -1262,6 +1171,24 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.idea/libraries/Maven__org_apache_curator_curator_framework_2_4_0.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="228">
<caret line="12" column="12" lean-forward="true" selection-start-line="12" selection-start-column="12" selection-end-line="12" selection-end-column="12" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionAggrDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="152">
<caret line="8" column="18" lean-forward="false" selection-start-line="8" selection-start-column="16" selection-end-line="8" selection-end-column="20" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/SessionAggrStatAccumulator.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="473">
@ -1274,20 +1201,128 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionDetail.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="76">
<caret line="4" column="50" lean-forward="false" selection-start-line="4" selection-start-column="50" selection-end-line="4" selection-end-column="50" />
<folding>
<element signature="e#1310#1311#0" expanded="true" />
<element signature="e#1339#1340#0" expanded="true" />
<element signature="e#1381#1382#0" expanded="true" />
<element signature="e#1417#1418#0" expanded="true" />
<element signature="e#1448#1449#0" expanded="true" />
<element signature="e#1477#1478#0" expanded="true" />
<element signature="e#1519#1520#0" expanded="true" />
<element signature="e#1555#1556#0" expanded="true" />
<element signature="e#1590#1591#0" expanded="true" />
<element signature="e#1621#1622#0" expanded="true" />
<element signature="e#1669#1670#0" expanded="true" />
<element signature="e#1709#1710#0" expanded="true" />
<element signature="e#1740#1741#0" expanded="true" />
<element signature="e#1769#1770#0" expanded="true" />
<element signature="e#1811#1812#0" expanded="true" />
<element signature="e#1847#1848#0" expanded="true" />
<element signature="e#1884#1885#0" expanded="true" />
<element signature="e#1917#1918#0" expanded="true" />
<element signature="e#1969#1970#0" expanded="true" />
<element signature="e#2013#2014#0" expanded="true" />
<element signature="e#2053#2054#0" expanded="true" />
<element signature="e#2089#2090#0" expanded="true" />
<element signature="e#2147#2148#0" expanded="true" />
<element signature="e#2197#2198#0" expanded="true" />
<element signature="e#2237#2238#0" expanded="true" />
<element signature="e#2275#2276#0" expanded="true" />
<element signature="e#2335#2336#0" expanded="true" />
<element signature="e#2389#2390#0" expanded="true" />
<element signature="e#2428#2429#0" expanded="true" />
<element signature="e#2465#2466#0" expanded="true" />
<element signature="e#2523#2524#0" expanded="true" />
<element signature="e#2575#2576#0" expanded="true" />
<element signature="e#2618#2619#0" expanded="true" />
<element signature="e#2657#2658#0" expanded="true" />
<element signature="e#2721#2722#0" expanded="true" />
<element signature="e#2777#2778#0" expanded="true" />
<element signature="e#2819#2820#0" expanded="true" />
<element signature="e#2857#2858#0" expanded="true" />
<element signature="e#2919#2920#0" expanded="true" />
<element signature="e#2973#2974#0" expanded="true" />
<element signature="e#3014#3015#0" expanded="true" />
<element signature="e#3051#3052#0" expanded="true" />
<element signature="e#3111#3112#0" expanded="true" />
<element signature="e#3163#3164#0" expanded="true" />
<element signature="e#3203#3204#0" expanded="true" />
<element signature="e#3239#3240#0" expanded="true" />
<element signature="e#3297#3298#0" expanded="true" />
<element signature="e#3347#3348#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionRandomExtractDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="95">
<caret line="5" column="15" lean-forward="false" selection-start-line="5" selection-start-column="15" selection-end-line="5" selection-end-column="15" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionRandomExtractDaoImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="228">
<caret line="12" column="0" lean-forward="true" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/SessionRandomExtract.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="38">
<caret line="4" column="33" lean-forward="false" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="33" />
<folding>
<element signature="e#680#681#0" expanded="true" />
<element signature="e#709#710#0" expanded="true" />
<element signature="e#751#752#0" expanded="true" />
<element signature="e#787#788#0" expanded="true" />
<element signature="e#823#824#0" expanded="true" />
<element signature="e#855#856#0" expanded="true" />
<element signature="e#905#906#0" expanded="true" />
<element signature="e#947#948#0" expanded="true" />
<element signature="e#983#984#0" expanded="true" />
<element signature="e#1015#1016#0" expanded="true" />
<element signature="e#1065#1066#0" expanded="true" />
<element signature="e#1107#1108#0" expanded="true" />
<element signature="e#1148#1149#0" expanded="true" />
<element signature="e#1185#1186#0" expanded="true" />
<element signature="e#1245#1246#0" expanded="true" />
<element signature="e#1297#1298#0" expanded="true" />
<element signature="e#1342#1343#0" expanded="true" />
<element signature="e#1383#1384#0" expanded="true" />
<element signature="e#1451#1452#0" expanded="true" />
<element signature="e#1511#1512#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330">
<caret line="388" column="94" lean-forward="false" selection-start-line="388" selection-start-column="94" selection-end-line="388" selection-end-column="94" />
<state relative-caret-position="539">
<caret line="378" column="27" lean-forward="true" selection-start-line="378" selection-start-column="27" selection-end-line="378" selection-end-column="27" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#4667#4892#0" expanded="true" />
<element signature="e#4891#4892#0" expanded="true" />
<element signature="e#5122#7873#0" expanded="true" />
<element signature="e#7872#7873#0" expanded="true" />
<element signature="e#8093#8316#0" expanded="true" />
<element signature="e#8315#8316#0" expanded="true" />
<element signature="e#8569#9583#0" expanded="true" />
<element signature="e#9582#9583#0" expanded="true" />
<element signature="e#4882#5107#0" expanded="true" />
<element signature="e#5106#5107#0" expanded="true" />
<element signature="e#5337#8133#0" expanded="true" />
<element signature="e#8132#8133#0" expanded="true" />
<element signature="e#8353#8576#0" expanded="true" />
<element signature="e#8575#8576#0" expanded="true" />
<element signature="e#8829#9843#0" expanded="true" />
<element signature="e#9842#9843#0" expanded="true" />
<element signature="e#16022#16546#0" expanded="true" />
<element signature="e#16545#16546#0" expanded="true" />
<element signature="e#16787#16814#0" expanded="true" />
<element signature="e#17590#17623#0" expanded="true" />
</folding>
</state>
</provider>

@ -24,6 +24,7 @@ public class Constants {
public static final String FIELD_PROFESSIONAL="professional";
public static final String FIELD_VISIT_LENGTH="visitLength";
public static final String FIELD_STEP_LENGTH="stepLength";
public static final String FIELD_START_TIME="startTime";
/**
* Spark

@ -0,0 +1,7 @@
package cn.edu.hust.dao;
import cn.edu.hust.domain.SessionRandomExtract;
public interface SessionRandomExtractDao {
void batchInsert(SessionRandomExtract sessionRandomExtract);
}

@ -0,0 +1,12 @@
package cn.edu.hust.dao.impl;
import cn.edu.hust.dao.SessionRandomExtractDao;
import cn.edu.hust.domain.SessionRandomExtract;
import cn.edu.hust.jdbc.JDBCHelper;
public class SessionRandomExtractDaoImpl implements SessionRandomExtractDao{
@Override
public void batchInsert(SessionRandomExtract sessionRandomExtract) {
//JDBCHelper.getInstance().
}
}

@ -0,0 +1,132 @@
package cn.edu.hust.domain;
import java.io.Serializable;
public class SessionDetail implements Serializable{
private Long taskId;
private Long userId;
private String sessinId;
private Long pageid;
private String actionTime;
private String searchKeyWord;
private Long clickCategoryId;
private Long clickProductId;
private String orderCategoryIds;
private String orderProductIds;
private String payCategoryIds;
private String payProductIds;
public SessionDetail() {
}
public SessionDetail(Long taskId, Long userId, String sessinId, Long pageid, String actionTime, String searchKeyWord, Long clickCategoryId, Long clickProductId, String orderCategoryIds, String orderProductIds, String payCategoryIds, String payProductIds) {
this.taskId = taskId;
this.userId = userId;
this.sessinId = sessinId;
this.pageid = pageid;
this.actionTime = actionTime;
this.searchKeyWord = searchKeyWord;
this.clickCategoryId = clickCategoryId;
this.clickProductId = clickProductId;
this.orderCategoryIds = orderCategoryIds;
this.orderProductIds = orderProductIds;
this.payCategoryIds = payCategoryIds;
this.payProductIds = payProductIds;
}
public Long getTaskId() {
return taskId;
}
public void setTaskId(Long taskId) {
this.taskId = taskId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getSessinId() {
return sessinId;
}
public void setSessinId(String sessinId) {
this.sessinId = sessinId;
}
public Long getPageid() {
return pageid;
}
public void setPageid(Long pageid) {
this.pageid = pageid;
}
public String getActionTime() {
return actionTime;
}
public void setActionTime(String actionTime) {
this.actionTime = actionTime;
}
public String getSearchKeyWord() {
return searchKeyWord;
}
public void setSearchKeyWord(String searchKeyWord) {
this.searchKeyWord = searchKeyWord;
}
public Long getClickCategoryId() {
return clickCategoryId;
}
public void setClickCategoryId(Long clickCategoryId) {
this.clickCategoryId = clickCategoryId;
}
public Long getClickProductId() {
return clickProductId;
}
public void setClickProductId(Long clickProductId) {
this.clickProductId = clickProductId;
}
public String getOrderCategoryIds() {
return orderCategoryIds;
}
public void setOrderCategoryIds(String orderCategoryIds) {
this.orderCategoryIds = orderCategoryIds;
}
public String getOrderProductIds() {
return orderProductIds;
}
public void setOrderProductIds(String orderProductIds) {
this.orderProductIds = orderProductIds;
}
public String getPayCategoryIds() {
return payCategoryIds;
}
public void setPayCategoryIds(String payCategoryIds) {
this.payCategoryIds = payCategoryIds;
}
public String getPayProductIds() {
return payProductIds;
}
public void setPayProductIds(String payProductIds) {
this.payProductIds = payProductIds;
}
}

@ -0,0 +1,62 @@
package cn.edu.hust.domain;
import java.io.Serializable;
public class SessionRandomExtract implements Serializable {
private Long taskId;
private String sessionId;
private String startTime;
private String searchKeyWords;
private String click_category_ids;
public SessionRandomExtract() {
}
public void set(Long taskId, String sessionId, String startTime, String searchKeyWords, String click_category_ids) {
this.taskId = taskId;
this.sessionId = sessionId;
this.startTime = startTime;
this.searchKeyWords = searchKeyWords;
this.click_category_ids = click_category_ids;
}
public Long getTaskId() {
return taskId;
}
public void setTaskId(Long taskId) {
this.taskId = taskId;
}
public String getSessionId() {
return sessionId;
}
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getSearchKeyWords() {
return searchKeyWords;
}
public void setSearchKeyWords(String searchKeyWords) {
this.searchKeyWords = searchKeyWords;
}
public String getClick_category_ids() {
return click_category_ids;
}
public void setClick_category_ids(String click_category_ids) {
this.click_category_ids = click_category_ids;
}
}

@ -21,11 +21,12 @@ import org.apache.spark.api.java.function.PairFunction;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.catalyst.expressions.Rand;
import org.apache.spark.sql.hive.HiveContext;
import org.joda.time.DateTime;
import scala.Tuple2;
import java.util.Date;
import java.util.*;
/**
*
@ -89,7 +90,12 @@ public class UserVisitAnalyze {
*
*
*/
//在使用Accumulutor之前需要使用Action算子否则获取的值为空这里随机计算
filteredSessionRDD.count();
/**
* 使CountByKey
*/
randomExtractSession(filteredSessionRDD);
//计算各个session占比,并写入MySQL
calculateAndPersist(sessionAggrStatAccumulator.value(),taskId);
//关闭spark上下文
@ -98,7 +104,6 @@ public class UserVisitAnalyze {
/**
*
* @param sc
@ -207,7 +212,7 @@ public class UserVisitAnalyze {
String clickCategoryIdsInfo=StringUtils.trimComma(clickCategoryIds.toString());
String info=Constants.FIELD_SESSIONID+"="+sessionId+"|"+Constants.FIELD_SERACH_KEYWORDS+"="+searchKeywordsInfo+"|"
+Constants.FIELD_CLICK_CATEGORYIDS+"="+clickCategoryIdsInfo+"|"+Constants.FIELD_VISIT_LENGTH+"="+visitLengtth+"|"
+Constants.FIELD_STEP_LENGTH+"="+stepLength;
+Constants.FIELD_STEP_LENGTH+"="+stepLength+"|"+Constants.FIELD_START_TIME+"="+startTime;
return new Tuple2<Long, String>(userId,info);
}
});
@ -354,7 +359,101 @@ public class UserVisitAnalyze {
return filteredSessionRDD;
}
/**
* Sesison
* @param filteredSessionRDD
*/
private static void randomExtractSession(JavaPairRDD<String, String> filteredSessionRDD) {
//1.先将过滤Seesion进行映射映射成为Time,Info的数据格式
final JavaPairRDD<String,String> mapDataRDD=filteredSessionRDD.mapToPair(new PairFunction<Tuple2<String, String>, String, String>() {
@Override
public Tuple2<String, String> call(Tuple2<String, String> tuple2) throws Exception {
String info=tuple2._2;
//获取开始的时间
String startTime=StringUtils.getFieldFromConcatString(info,"\\|",Constants.FIELD_START_TIME);
String formatStartTime=DateUtils.getDateHour(startTime);
return new Tuple2<String, String>(formatStartTime,info);
}
});
//计算每一个小时的Session数量
Map<String,Object> mapCount=mapDataRDD.countByKey();
//设计一个新的数据结构Map<String,Map<String,Long>> dateHourCount,日期作为Key时间和数量作为Map
Map<String,Map<String,Long>> dateHourCountMap=new HashMap<String, Map<String, Long>>();
//遍历mapCount
for (Map.Entry<String,Object> entry:mapCount.entrySet())
{
String date=entry.getKey().split("_")[0];
String hour=entry.getKey().split("_")[1];
Map<String,Long> hourCount=dateHourCountMap.get(date);
if(hourCount==null)
{
hourCount=new HashMap<String, Long>();
dateHourCountMap.put(date,hourCount);
}
hourCount.put(hour,(Long)entry.getValue());
}
//将数据按照天数平均
int countPerday=100/dateHourCountMap.size();
//实现一个随机函数后面将会用到
Random random=new Random();
//设计一个新的数据结构,用于存储随机索引,Key是每一天,Map是小时和随机索引列表构成的
Map<String,Map<String,List<Long>>> dateRandomExtractMap=new HashMap<String, Map<String, List<Long>>>();
for (Map.Entry<String,Map<String,Long>> dateHourCount:dateHourCountMap.entrySet())
{
//日期
String date=dateHourCount.getKey();
//每一天个Session个数
Long sessionCount=0L;
for(Map.Entry<String,Long> hourCountMap:dateHourCount.getValue().entrySet())
{
sessionCount+=hourCountMap.getValue();
}
//获取每一天随机存储的Map
Map<String,List<Long>> dayExtactMap=dateRandomExtractMap.get(date);
if(dayExtactMap==null)
{
dayExtactMap=new HashMap<String, List<Long>>();
dateRandomExtractMap.put(date,dayExtactMap);
}
//遍历每一个小时计算出每一个小时的Session占比和抽取的数量
for(Map.Entry<String,Long> hourCountMap:dateHourCount.getValue().entrySet())
{
int extractSize= (int) ((double) hourCountMap.getValue()/sessionCount*countPerday);
//如果抽离的长度大于被抽取数据的长度,那么抽取的长度就是被抽取长度
extractSize= extractSize>hourCountMap.getValue()? hourCountMap.getValue().intValue():extractSize;
//获取存储每一个小时的List
List<Long> indexList=dayExtactMap.get(hourCountMap.getKey());
if(indexList==null)
{
indexList=new ArrayList<Long>();
dayExtactMap.put(hourCountMap.getKey(),indexList);
}
//使用随机函数生成随机索引
for(int i=0;i<extractSize;i++)
{
int index=random.nextInt(hourCountMap.getValue().intValue());
//如果包含,那么一直循环直到不包含为止
while(indexList.contains(Long.valueOf(index)));
index=random.nextInt(hourCountMap.getValue().intValue());
indexList.add(Long.valueOf(index));
}
}
}
}
//计算各个范围的占比,并持久化到数据库
private static void calculateAndPersist(String value,Long taskId) {
System.out.println(value);
Long sessionCount=Long.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.SESSION_COUNT));
@ -377,7 +476,7 @@ public class UserVisitAnalyze {
Double step_Length_30_60=Double.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.STEP_PERIOD_30_60));
Double step_Length_60=Double.valueOf(StringUtils.getFieldFromConcatString(value,"\\|",Constants.STEP_PERIOD_60));
//访问时长对应的sesison占比
//访问时长对应的sesison占比保留3位小数
double visit_Length_1s_3s_ratio=NumberUtils.formatDouble(visit_Length_1s_3s/sessionCount,3);
double visit_Length_4s_6s_ratio=NumberUtils.formatDouble(visit_Length_4s_6s/sessionCount,3);
double visit_Length_7s_9s_ratio=NumberUtils.formatDouble(visit_Length_7s_9s/sessionCount,3);
@ -388,7 +487,7 @@ public class UserVisitAnalyze {
double visit_Length_10m_30m_ratio=NumberUtils.formatDouble(visit_Length_10m_30m/sessionCount,3);
double visit_Length_30m_ratio=NumberUtils.formatDouble(visit_Length_30m/sessionCount,3);
//访问步长对应的session占比
//访问步长对应的session占比保留3位小数
double step_Length_1_3_ratio= NumberUtils.formatDouble(step_Length_1_3/sessionCount,3);
double step_Length_4_6_ratio=NumberUtils.formatDouble(step_Length_4_6/sessionCount,3);
double step_Length_7_9_ratio=NumberUtils.formatDouble(step_Length_7_9/sessionCount,3);

Loading…
Cancel
Save