Top10品类获取

main
oeljeklaus-you 7 years ago
parent 62d72479ca
commit 4a66781e53

@ -2,14 +2,8 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="a7505764-040b-48e2-b2fc-8c5b579e595f" name="Default" comment="">
<change beforePath="" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionDetailTest.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionRandomExtractDaoTest.java" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionAggrStatDao.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionAggrStatDao.java" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionDetailDao.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionDetailDao.java" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionDetailDaoImpl.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionDetailDaoImpl.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/resources/conf.properties" afterPath="$PROJECT_DIR$/src/main/resources/conf.properties" />
</list>
<ignored path="$PROJECT_DIR$/out/" />
<ignored path="$PROJECT_DIR$/target/" />
@ -22,97 +16,71 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="UserVisitAnalyze.java" pinned="false" current-in-tab="false">
<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="1284">
<caret line="100" column="10" lean-forward="false" selection-start-line="100" selection-start-column="10" selection-end-line="100" selection-end-column="10" />
<state relative-caret-position="465">
<caret line="660" column="0" lean-forward="true" selection-start-line="660" selection-start-column="0" selection-end-line="660" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#4973#5199#0" expanded="true" />
<element signature="e#5198#5199#0" expanded="true" />
<element signature="e#5548#5773#0" expanded="true" />
<element signature="e#5772#5773#0" expanded="true" />
<element signature="e#6003#8821#0" expanded="true" />
<element signature="e#8820#8821#0" expanded="true" />
<element signature="e#9041#9264#0" expanded="true" />
<element signature="e#9263#9264#0" expanded="true" />
<element signature="e#9517#10531#0" expanded="true" />
<element signature="e#10530#10531#0" expanded="true" />
<element signature="e#16828#17352#0" expanded="true" />
<element signature="e#17351#17352#0" expanded="true" />
<element signature="e#17593#17620#0" expanded="true" />
<element signature="e#18402#18435#0" expanded="true" />
<element signature="e#20610#22709#0" expanded="true" />
<element signature="e#21076#21100#0" expanded="true" />
<element signature="e#21305#21327#0" expanded="true" />
<element signature="e#22708#22709#0" expanded="true" />
<element signature="e#22891#24423#0" expanded="true" />
<element signature="e#23158#23173#0" expanded="true" />
<element signature="e#24422#24423#0" expanded="true" />
<element signature="e#21341#21363#0" expanded="true" />
<element signature="e#23194#23209#0" expanded="true" />
<element signature="e#29213#29545#0" expanded="true" />
<element signature="e#29544#29545#0" expanded="true" />
<element signature="e#29663#30909#0" expanded="true" />
<element signature="e#29969#29989#0" expanded="true" />
<element signature="e#30908#30909#0" expanded="true" />
<element signature="e#32108#32915#0" expanded="true" />
<element signature="e#32914#32915#0" expanded="true" />
<element signature="e#33002#33819#0" expanded="true" />
<element signature="e#33818#33819#0" expanded="true" />
<element signature="e#33904#34719#0" expanded="true" />
<element signature="e#34718#34719#0" expanded="true" />
<element signature="e#34932#35316#0" expanded="true" />
<element signature="e#35315#35316#0" expanded="true" />
<element signature="e#35413#36117#0" expanded="true" />
<element signature="e#35675#35695#0" expanded="true" />
<element signature="e#36116#36117#0" expanded="true" />
<element signature="e#36215#36406#0" expanded="true" />
<element signature="e#36405#36406#0" expanded="true" />
<element signature="e#36637#37020#0" expanded="true" />
<element signature="e#37019#37020#0" expanded="true" />
<element signature="e#37121#37831#0" expanded="true" />
<element signature="e#37383#37403#0" expanded="true" />
<element signature="e#37830#37831#0" expanded="true" />
<element signature="e#37933#38124#0" expanded="true" />
<element signature="e#38123#38124#0" expanded="true" />
<element signature="e#38358#38711#0" expanded="true" />
<element signature="e#38710#38711#0" expanded="true" />
<element signature="e#38808#39114#0" expanded="true" />
<element signature="e#39113#39114#0" expanded="true" />
<element signature="e#39216#39407#0" expanded="true" />
<element signature="e#39406#39407#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="JDBCHelper.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/jdbc/JDBCHelper.java">
<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="473">
<caret line="44" column="0" lean-forward="true" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
<state relative-caret-position="916">
<caret line="80" column="12" lean-forward="false" selection-start-line="80" selection-start-column="12" selection-end-line="80" selection-end-column="12" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="conf.properties" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/resources/conf.properties">
<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="76">
<caret line="4" column="14" lean-forward="false" selection-start-line="4" selection-start-column="14" selection-end-line="4" selection-end-column="14" />
<state relative-caret-position="344">
<caret line="30" column="64" lean-forward="false" selection-start-line="30" selection-start-column="64" selection-end-line="30" selection-end-column="64" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SessionDetailDao.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionDetailDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="171">
<caret line="9" column="10" lean-forward="false" selection-start-line="9" selection-start-column="10" selection-end-line="9" selection-end-column="10" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SessionDetailDaoImpl.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionDetailDaoImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="206">
<caret line="20" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#1162#1172#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SessionRandomExtractDaoTest.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionRandomExtractDaoTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209">
<caret line="11" column="23" lean-forward="false" selection-start-line="11" selection-start-column="16" selection-end-line="11" selection-end-column="31" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#359#381#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
@ -158,7 +126,6 @@
<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" />
@ -171,9 +138,10 @@
<option value="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionRandomExtractDaoTest.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionDetailDao.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionDetailDaoImpl.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" />
<option value="$PROJECT_DIR$/src/main/resources/conf.properties" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionAggrStatDao.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/constant/Constants.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" />
</list>
</option>
</component>
@ -279,71 +247,6 @@
<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="dao" 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="dao" type="462c0819:PsiDirectoryNode" />
<item name="factory" 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="dao" type="462c0819:PsiDirectoryNode" />
<item name="impl" 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="demo" 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" />
<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="jdbc" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="UserActionAnalyzePlatform" type="b2602c69:ProjectViewProjectNode" />
<item name="UserActionAnalyzePlatform" type="462c0819:PsiDirectoryNode" />
@ -675,7 +578,7 @@
<workItem from="1529590333052" duration="2564000" />
<workItem from="1529630336674" duration="15098000" />
<workItem from="1529666057370" duration="13151000" />
<workItem from="1529717692529" duration="20390000" />
<workItem from="1529717692529" duration="26030000" />
</task>
<task id="LOCAL-00001" summary="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成">
<created>1529592741848</created>
@ -727,7 +630,7 @@
</history-entry>
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="52237000" />
<option name="totallyTimeSpent" value="57877000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="0" width="1440" height="900" extended-state="0" />
@ -743,7 +646,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="false" 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.32648125" 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" />
@ -1131,8 +1034,8 @@
<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" />
<element signature="e#486#642#0" expanded="false" />
<element signature="e#641#642#0" expanded="false" />
</folding>
</state>
</provider>
@ -1165,24 +1068,12 @@
</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">
<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="false" />
<element signature="e#294#295#0" expanded="false" />
<element signature="e#326#327#0" expanded="false" />
</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="133">
<caret line="7" column="47" lean-forward="false" selection-start-line="7" selection-start-column="47" selection-end-line="7" selection-end-column="47" />
<folding>
<element signature="imports" expanded="true" />
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
@ -1254,25 +1145,15 @@
</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="506">
<caret line="96" column="48" lean-forward="false" selection-start-line="96" selection-start-column="48" selection-end-line="96" selection-end-column="48" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/factory/DaoFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="361">
<caret line="34" column="42" lean-forward="false" selection-start-line="34" selection-start-column="42" selection-end-line="34" selection-end-column="42" />
<folding>
<element signature="e#834#835#0" expanded="true" />
<element signature="e#890#891#0" expanded="true" />
<element signature="e#955#956#0" expanded="true" />
<element signature="e#1004#1005#0" expanded="true" />
<element signature="e#834#835#0" expanded="false" />
<element signature="e#890#891#0" expanded="false" />
<element signature="e#955#956#0" expanded="false" />
<element signature="e#1004#1005#0" expanded="false" />
</folding>
</state>
</provider>
@ -1336,14 +1217,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="-224">
<caret line="2" column="13" lean-forward="false" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionDetailTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="152">
@ -1383,95 +1256,131 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionRandomExtractDaoTest.java">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionDetailDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209">
<caret line="11" column="23" lean-forward="false" selection-start-line="11" selection-start-column="16" selection-end-line="11" selection-end-column="31" />
<state relative-caret-position="171">
<caret line="9" column="10" lean-forward="false" selection-start-line="9" selection-start-column="10" selection-end-line="9" selection-end-column="10" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#359#381#0" expanded="true" />
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionDetailDao.java">
<entry file="file://$PROJECT_DIR$/src/main/resources/conf.properties">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="76">
<caret line="4" column="14" lean-forward="false" selection-start-line="4" selection-start-column="14" selection-end-line="4" selection-end-column="14" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionAggrStatDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="171">
<caret line="9" column="10" lean-forward="false" selection-start-line="9" selection-start-column="10" selection-end-line="9" selection-end-column="10" />
<caret line="9" column="0" lean-forward="true" selection-start-line="9" selection-start-column="0" selection-end-line="9" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionDetailDaoImpl.java">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/jdbc/JDBCHelper.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="206">
<caret line="20" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
<state relative-caret-position="494">
<caret line="32" column="11" lean-forward="true" selection-start-line="32" selection-start-column="11" selection-end-line="32" selection-end-column="11" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/SessionRandomExtractDaoTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209">
<caret line="11" column="23" lean-forward="false" selection-start-line="11" selection-start-column="16" selection-end-line="11" selection-end-column="31" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#1162#1172#0" expanded="true" />
<element signature="e#359#381#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/SessionDetailDaoImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1284">
<caret line="100" column="10" lean-forward="false" selection-start-line="100" selection-start-column="10" selection-end-line="100" selection-end-column="10" />
<state relative-caret-position="345">
<caret line="20" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#4973#5199#0" expanded="true" />
<element signature="e#5198#5199#0" expanded="true" />
<element signature="e#5548#5773#0" expanded="true" />
<element signature="e#5772#5773#0" expanded="true" />
<element signature="e#6003#8821#0" expanded="true" />
<element signature="e#8820#8821#0" expanded="true" />
<element signature="e#9041#9264#0" expanded="true" />
<element signature="e#9263#9264#0" expanded="true" />
<element signature="e#9517#10531#0" expanded="true" />
<element signature="e#10530#10531#0" expanded="true" />
<element signature="e#16828#17352#0" expanded="true" />
<element signature="e#17351#17352#0" expanded="true" />
<element signature="e#17593#17620#0" expanded="true" />
<element signature="e#18402#18435#0" expanded="true" />
<element signature="e#20610#22709#0" expanded="true" />
<element signature="e#21076#21100#0" expanded="true" />
<element signature="e#21305#21327#0" expanded="true" />
<element signature="e#22708#22709#0" expanded="true" />
<element signature="e#22891#24423#0" expanded="true" />
<element signature="e#23158#23173#0" expanded="true" />
<element signature="e#24422#24423#0" expanded="true" />
<element signature="imports" expanded="false" />
<element signature="e#1162#1172#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/resources/conf.properties">
<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="76">
<caret line="4" column="14" lean-forward="false" selection-start-line="4" selection-start-column="14" selection-end-line="4" selection-end-column="14" />
<state relative-caret-position="495">
<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 />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/SessionAggrStatDao.java">
<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="171">
<caret line="9" column="0" lean-forward="true" selection-start-line="9" selection-start-column="0" selection-end-line="9" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
<state relative-caret-position="916">
<caret line="80" column="12" lean-forward="false" selection-start-line="80" selection-start-column="12" selection-end-line="80" selection-end-column="12" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/jdbc/JDBCHelper.java">
<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="473">
<caret line="44" column="0" lean-forward="true" selection-start-line="44" selection-start-column="0" selection-end-line="44" selection-end-column="0" />
<state relative-caret-position="344">
<caret line="30" column="64" lean-forward="false" selection-start-line="30" selection-start-column="64" selection-end-line="30" selection-end-column="64" />
<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="465">
<caret line="660" column="0" lean-forward="true" selection-start-line="660" selection-start-column="0" selection-end-line="660" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#21341#21363#0" expanded="true" />
<element signature="e#23194#23209#0" expanded="true" />
<element signature="e#29213#29545#0" expanded="true" />
<element signature="e#29544#29545#0" expanded="true" />
<element signature="e#29663#30909#0" expanded="true" />
<element signature="e#29969#29989#0" expanded="true" />
<element signature="e#30908#30909#0" expanded="true" />
<element signature="e#32108#32915#0" expanded="true" />
<element signature="e#32914#32915#0" expanded="true" />
<element signature="e#33002#33819#0" expanded="true" />
<element signature="e#33818#33819#0" expanded="true" />
<element signature="e#33904#34719#0" expanded="true" />
<element signature="e#34718#34719#0" expanded="true" />
<element signature="e#34932#35316#0" expanded="true" />
<element signature="e#35315#35316#0" expanded="true" />
<element signature="e#35413#36117#0" expanded="true" />
<element signature="e#35675#35695#0" expanded="true" />
<element signature="e#36116#36117#0" expanded="true" />
<element signature="e#36215#36406#0" expanded="true" />
<element signature="e#36405#36406#0" expanded="true" />
<element signature="e#36637#37020#0" expanded="true" />
<element signature="e#37019#37020#0" expanded="true" />
<element signature="e#37121#37831#0" expanded="true" />
<element signature="e#37383#37403#0" expanded="true" />
<element signature="e#37830#37831#0" expanded="true" />
<element signature="e#37933#38124#0" expanded="true" />
<element signature="e#38123#38124#0" expanded="true" />
<element signature="e#38358#38711#0" expanded="true" />
<element signature="e#38710#38711#0" expanded="true" />
<element signature="e#38808#39114#0" expanded="true" />
<element signature="e#39113#39114#0" expanded="true" />
<element signature="e#39216#39407#0" expanded="true" />
<element signature="e#39406#39407#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>

@ -25,6 +25,10 @@ public class Constants {
public static final String FIELD_VISIT_LENGTH="visitLength";
public static final String FIELD_STEP_LENGTH="stepLength";
public static final String FIELD_START_TIME="startTime";
public static final String FIELD_CATEGORY_ID="categoryId";
public static final String FIELD_CLICK_CATEGORY="categoryId";
public static final String FIELD_ORDER_CATEGORY="clickCategory";
public static final String FIELD_PAY_CATEGORY="orderCategory";
/**
* Spark

@ -2,7 +2,6 @@ package cn.edu.hust.session;
import cn.edu.hust.conf.ConfigurationManager;
import cn.edu.hust.constant.Constants;
import cn.edu.hust.dao.SessionDetailDao;
import cn.edu.hust.dao.TaskDao;
import cn.edu.hust.dao.factory.DaoFactory;
import cn.edu.hust.domain.SessionAggrStat;
@ -101,6 +100,9 @@ public class UserVisitAnalyze {
//filteredSessionRDD.count();
//计算各个session占比,并写入MySQL
calculateAndPersist(sessionAggrStatAccumulator.value(),taskId);
//
getTop10Category(filteredSessionRDD,sessionInfoPairRDD);
//关闭spark上下文
context.close();
}
@ -595,4 +597,229 @@ public class UserVisitAnalyze {
// 插入数据库
DaoFactory.getSessionAggrStatDao().insert(sessionAggrStat);
}
/**
* top
* @param filteredSessionRDD
* @param sessionInfoPairRDD
*/
private static void getTop10Category(JavaPairRDD<String, String> filteredSessionRDD, JavaPairRDD<String, Row> sessionInfoPairRDD) {
//1.获取符合条件的session梵文的所有品类
JavaPairRDD<String,Row> sessionId2DetailRDD=filteredSessionRDD.join(sessionInfoPairRDD).mapToPair(new PairFunction<Tuple2<String, Tuple2<String, Row>>, String, Row>() {
@Override
public Tuple2<String, Row> call(Tuple2<String, Tuple2<String, Row>> stringTuple2Tuple2) throws Exception {
return new Tuple2<String, Row>(stringTuple2Tuple2._1,stringTuple2Tuple2._2._2);
}
});
//2。获取访问的品类id访问过表示点击下单支付
JavaPairRDD<Long,Long> categoryRDD=sessionId2DetailRDD.flatMapToPair(new PairFlatMapFunction<Tuple2<String,Row>, Long, Long>() {
@Override
public Iterable<Tuple2<Long, Long>> call(Tuple2<String, Row> stringRowTuple2) throws Exception {
Row row=stringRowTuple2._2;
List<Tuple2<Long,Long>> visitCategoryList=new ArrayList<Tuple2<Long, Long>>();
Long clickCategoryId=row.getLong(6);
//点击品类的id
if(clickCategoryId!=null)
visitCategoryList.add(new Tuple2<Long, Long>(clickCategoryId,clickCategoryId));
String[] orderCategoryIdsSplited=row.getString(8).split(",");
for (String orderCategoryId:
orderCategoryIdsSplited) {
visitCategoryList.add(new Tuple2<Long, Long>(Long.valueOf(orderCategoryId),Long.valueOf(orderCategoryId)));
}
String[] payCategoryIdsSplited=row.getString(10).split(",");
for (String payCategoryId:
payCategoryIdsSplited) {
visitCategoryList.add(new Tuple2<Long, Long>(Long.valueOf(payCategoryId),Long.valueOf(payCategoryId)));
}
return visitCategoryList;
}
});
//3。计算各个品类的点击下单和支付次数
// 3.1 计算点击品类的数量
JavaPairRDD<Long,Long> clickCategoryRDD = getLClickCategoryRDD(sessionId2DetailRDD);
// 3.2 计算下单的品类的数量
JavaPairRDD<Long,Long> orderCategoryRDD= getOrderCategoryRDD(sessionId2DetailRDD);
// 3.3 计算支付的品类的数量
JavaPairRDD<Long,Long> payCategoryRDD=getPayCategoryRDD(sessionId2DetailRDD);
//4.将上述计算的三个字段进行join注意这里是LeftOuterJoin因为有些品类只是点击了
JavaPairRDD<Long,String> categoryCountRDD=joinCategoryAndData(categoryRDD,clickCategoryRDD,orderCategoryRDD,payCategoryRDD);
//5.自定义二次排序的key
}
/**
*
* @param categoryRDD
* @param clickCategoryRDD
* @param orderCategoryRDD
* @param payCategoryRDD
* @return
*/
private static JavaPairRDD<Long,String> joinCategoryAndData(JavaPairRDD<Long, Long> categoryRDD, JavaPairRDD<Long, Long> clickCategoryRDD, JavaPairRDD<Long, Long> orderCategoryRDD, JavaPairRDD<Long, Long> payCategoryRDD) {
JavaPairRDD<Long, Tuple2<Long, com.google.common.base.Optional<Long>>> tmpJoinRDD=categoryRDD.leftOuterJoin(clickCategoryRDD);
JavaPairRDD<Long,String> tmpRDD=tmpJoinRDD.mapToPair(new PairFunction<Tuple2<Long, Tuple2<Long, com.google.common.base.Optional<Long>>>, Long, String>() {
@Override
public Tuple2<Long, String> call(Tuple2<Long, Tuple2<Long, com.google.common.base.Optional<Long>>> longTuple2Tuple2) throws Exception {
Long categoryId=longTuple2Tuple2._1;
com.google.common.base.Optional<Long> clickIOptional=longTuple2Tuple2._2._2;
Long clickCount=0L;
if(clickIOptional.isPresent())
{
clickCount=clickIOptional.get();
}
String value=Constants.FIELD_CATEGORY_ID+"="+categoryId+"|"+Constants.FIELD_CLICK_CATEGORYIDS+"="+clickCount;
return new Tuple2<Long, String>(categoryId,value);
}
});
//join下单的次数
tmpRDD=tmpRDD.leftOuterJoin(orderCategoryRDD).mapToPair(new PairFunction<Tuple2<Long, Tuple2<String, com.google.common.base.Optional<Long>>>, Long, String>() {
@Override
public Tuple2<Long, String> call(Tuple2<Long, Tuple2<String, com.google.common.base.Optional<Long>>> longTuple2Tuple2) throws Exception {
Long categoryId=longTuple2Tuple2._1;
com.google.common.base.Optional<Long> clickIOptional=longTuple2Tuple2._2._2;
Long clickCount=0L;
String value=longTuple2Tuple2._2._1;
if(clickIOptional.isPresent())
{
clickCount=clickIOptional.get();
}
value=value+"|"+Constants.FIELD_ORDER_CATEGORY+"="+clickCount;
return new Tuple2<Long, String>(categoryId,value);
}
});
//join支付的次数
tmpRDD=tmpRDD.leftOuterJoin(payCategoryRDD).mapToPair(new PairFunction<Tuple2<Long, Tuple2<String, com.google.common.base.Optional<Long>>>, Long, String>() {
@Override
public Tuple2<Long, String> call(Tuple2<Long, Tuple2<String, com.google.common.base.Optional<Long>>> longTuple2Tuple2) throws Exception {
Long categoryId=longTuple2Tuple2._1;
com.google.common.base.Optional<Long> clickIOptional=longTuple2Tuple2._2._2;
Long clickCount=0L;
String value=longTuple2Tuple2._2._1;
if(clickIOptional.isPresent())
{
clickCount=clickIOptional.get();
}
value=value+"|"+Constants.FIELD_PAY_CATEGORY+"="+clickCount;
return new Tuple2<Long, String>(categoryId,value);
}
});
return tmpRDD;
}
private static JavaPairRDD<Long,Long> getPayCategoryRDD(JavaPairRDD<String, Row> sessionId2DetailRDD) {
JavaPairRDD<String,Row> payActionRDD=sessionId2DetailRDD.filter(new Function<Tuple2<String, Row>, Boolean>() {
@Override
public Boolean call(Tuple2<String, Row> stringRowTuple2) throws Exception {
Row row=stringRowTuple2._2;
String categoryIds=row.getString(10);
if(categoryIds==null||"".equals(categoryIds)) return false;
return true;
}
});
//映射成为新的Pair
JavaPairRDD<Long,Long> payCategoryRDD=payActionRDD.flatMapToPair(new PairFlatMapFunction<Tuple2<String, Row>, Long, Long>() {
@Override
public Iterable<Tuple2<Long, Long>> call(Tuple2<String, Row> stringRowTuple2) throws Exception {
List<Tuple2<Long,Long>> orderCategoryIds=new ArrayList<Tuple2<Long, Long>>();
Row row=stringRowTuple2._2;
String payCategoryIdsSplited[]=row.getString(10).split(",");
for (String payCategoryId:
payCategoryIdsSplited) {
orderCategoryIds.add(new Tuple2<Long, Long>(Long.valueOf(payCategoryId),Long.valueOf(payCategoryId)));
}
return orderCategoryIds;
}
});
//计算次数
JavaPairRDD<Long,Long> payCategoryCountRDD=payCategoryRDD.reduceByKey(new Function2<Long, Long, Long>() {
@Override
public Long call(Long aLong, Long aLong2) throws Exception {
return aLong+aLong2;
}
});
return payCategoryCountRDD;
}
private static JavaPairRDD<Long,Long> getOrderCategoryRDD(JavaPairRDD<String, Row> sessionId2DetailRDD) {
JavaPairRDD<String,Row> orderActionRDD=sessionId2DetailRDD.filter(new Function<Tuple2<String, Row>, Boolean>() {
@Override
public Boolean call(Tuple2<String, Row> stringRowTuple2) throws Exception {
Row row=stringRowTuple2._2;
String categoryIds=row.getString(8);
if(categoryIds==null||"".equals(categoryIds)) return false;
return true;
}
});
//映射成为新的Pair
JavaPairRDD<Long,Long> orderCategoryRDD=orderActionRDD.flatMapToPair(new PairFlatMapFunction<Tuple2<String, Row>, Long, Long>() {
@Override
public Iterable<Tuple2<Long, Long>> call(Tuple2<String, Row> stringRowTuple2) throws Exception {
List<Tuple2<Long,Long>> orderCategoryIds=new ArrayList<Tuple2<Long, Long>>();
Row row=stringRowTuple2._2;
String orderCategoryIdsSplited[]=row.getString(8).split(",");
for (String orderCategoryId:
orderCategoryIdsSplited) {
orderCategoryIds.add(new Tuple2<Long, Long>(Long.valueOf(orderCategoryId),Long.valueOf(orderCategoryId)));
}
return orderCategoryIds;
}
});
//计算次数
JavaPairRDD<Long,Long> orderCategoryCountRDD=orderCategoryRDD.reduceByKey(new Function2<Long, Long, Long>() {
@Override
public Long call(Long aLong, Long aLong2) throws Exception {
return aLong+aLong2;
}
});
return orderCategoryCountRDD;
}
private static JavaPairRDD<Long,Long> getLClickCategoryRDD(JavaPairRDD<String, Row> sessionId2DetailRDD) {
JavaPairRDD<String,Row> clickActionRDD=sessionId2DetailRDD.filter(new Function<Tuple2<String, Row>, Boolean>() {
@Override
public Boolean call(Tuple2<String, Row> stringRowTuple2) throws Exception {
Row row=stringRowTuple2._2;
Long categoryId=row.getLong(6);
if(categoryId==null) return false;
return true;
}
});
//映射成为新的Pair
JavaPairRDD<Long,Long> clickCategoryRDD=clickActionRDD.mapToPair(new PairFunction<Tuple2<String,Row>, Long,Long>() {
@Override
public Tuple2<Long,Long> call(Tuple2<String, Row> stringRowTuple2) throws Exception {
Long row=stringRowTuple2._2.getLong(6);
return new Tuple2<Long, Long>(row,1L);
}
});
//计算次数
JavaPairRDD<Long,Long> clickCategoryCountRDD=clickCategoryRDD.reduceByKey(new Function2<Long, Long, Long>() {
@Override
public Long call(Long aLong, Long aLong2) throws Exception {
return aLong+aLong2;
}
});
return clickCategoryCountRDD;
}
}

Loading…
Cancel
Save