用户Session聚合统计功能完成

用户Session聚合统计功能完成,使用自定义Accumulator,重构部分代码
main
oeljeklaus-you 7 years ago
parent 0bef49fb85
commit 46490e6d66

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: joda-time:joda-time:2.9">
<library name="Maven: joda-time:joda-time:2.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/joda-time/joda-time/2.9/joda-time-2.9.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/joda-time/joda-time/2.5/joda-time-2.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/joda-time/joda-time/2.9/joda-time-2.9-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/joda-time/joda-time/2.5/joda-time-2.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/joda-time/joda-time/2.9/joda-time-2.9-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/joda-time/joda-time/2.5/joda-time-2.5-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: net.razorvine:pyrolite:4.9">
<library name="Maven: net.razorvine:pyrolite:4.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/razorvine/pyrolite/4.9/pyrolite-4.9.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/net/razorvine/pyrolite/4.4/pyrolite-4.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/razorvine/pyrolite/4.9/pyrolite-4.9-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/net/razorvine/pyrolite/4.4/pyrolite-4.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/razorvine/pyrolite/4.9/pyrolite-4.9-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/net/razorvine/pyrolite/4.4/pyrolite-4.4-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: net.sf.py4j:py4j:0.8.2.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/py4j/py4j/0.8.2.1/py4j-0.8.2.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/py4j/py4j/0.8.2.1/py4j-0.8.2.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/py4j/py4j/0.8.2.1/py4j-0.8.2.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: net.sf.py4j:py4j:0.9">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/py4j/py4j/0.9/py4j-0.9.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/py4j/py4j/0.9/py4j-0.9-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/sf/py4j/py4j/0.9/py4j-0.9-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.curator:curator-client:2.6.0">
<library name="Maven: org.apache.curator:curator-client:2.1.0-incubating">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-client/2.6.0/curator-client-2.6.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-client/2.1.0-incubating/curator-client-2.1.0-incubating.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-client/2.6.0/curator-client-2.6.0-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-client/2.1.0-incubating/curator-client-2.1.0-incubating-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-client/2.6.0/curator-client-2.6.0-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/curator/curator-client/2.1.0-incubating/curator-client-2.1.0-incubating-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.spark:spark-catalyst_2.10:1.6.1">
<library name="Maven: org.apache.spark:spark-catalyst_2.10:1.5.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-catalyst_2.10/1.6.1/spark-catalyst_2.10-1.6.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-catalyst_2.10/1.5.1/spark-catalyst_2.10-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-catalyst_2.10/1.6.1/spark-catalyst_2.10-1.6.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-catalyst_2.10/1.5.1/spark-catalyst_2.10-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-catalyst_2.10/1.6.1/spark-catalyst_2.10-1.6.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-catalyst_2.10/1.5.1/spark-catalyst_2.10-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.spark:spark-core_2.10:1.6.1">
<library name="Maven: org.apache.spark:spark-core_2.10:1.5.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-core_2.10/1.6.1/spark-core_2.10-1.6.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-core_2.10/1.5.1/spark-core_2.10-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-core_2.10/1.6.1/spark-core_2.10-1.6.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-core_2.10/1.5.1/spark-core_2.10-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-core_2.10/1.6.1/spark-core_2.10-1.6.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-core_2.10/1.5.1/spark-core_2.10-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.spark:spark-hive_2.10:1.6.1">
<library name="Maven: org.apache.spark:spark-hive_2.10:1.5.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-hive_2.10/1.6.1/spark-hive_2.10-1.6.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-hive_2.10/1.5.1/spark-hive_2.10-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-hive_2.10/1.6.1/spark-hive_2.10-1.6.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-hive_2.10/1.5.1/spark-hive_2.10-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-hive_2.10/1.6.1/spark-hive_2.10-1.6.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-hive_2.10/1.5.1/spark-hive_2.10-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.spark:spark-launcher_2.10:1.6.1">
<library name="Maven: org.apache.spark:spark-launcher_2.10:1.5.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-launcher_2.10/1.6.1/spark-launcher_2.10-1.6.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-launcher_2.10/1.5.1/spark-launcher_2.10-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-launcher_2.10/1.6.1/spark-launcher_2.10-1.6.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-launcher_2.10/1.5.1/spark-launcher_2.10-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-launcher_2.10/1.6.1/spark-launcher_2.10-1.6.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-launcher_2.10/1.5.1/spark-launcher_2.10-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.spark:spark-network-common_2.10:1.6.1">
<library name="Maven: org.apache.spark:spark-network-common_2.10:1.5.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-network-common_2.10/1.6.1/spark-network-common_2.10-1.6.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-network-common_2.10/1.5.1/spark-network-common_2.10-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-network-common_2.10/1.6.1/spark-network-common_2.10-1.6.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-network-common_2.10/1.5.1/spark-network-common_2.10-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-network-common_2.10/1.6.1/spark-network-common_2.10-1.6.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-network-common_2.10/1.5.1/spark-network-common_2.10-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.spark:spark-network-shuffle_2.10:1.6.1">
<library name="Maven: org.apache.spark:spark-network-shuffle_2.10:1.5.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-network-shuffle_2.10/1.6.1/spark-network-shuffle_2.10-1.6.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-network-shuffle_2.10/1.5.1/spark-network-shuffle_2.10-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-network-shuffle_2.10/1.6.1/spark-network-shuffle_2.10-1.6.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-network-shuffle_2.10/1.5.1/spark-network-shuffle_2.10-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-network-shuffle_2.10/1.6.1/spark-network-shuffle_2.10-1.6.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-network-shuffle_2.10/1.5.1/spark-network-shuffle_2.10-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.spark:spark-sql_2.10:1.6.1">
<library name="Maven: org.apache.spark:spark-sql_2.10:1.5.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-sql_2.10/1.6.1/spark-sql_2.10-1.6.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-sql_2.10/1.5.1/spark-sql_2.10-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-sql_2.10/1.6.1/spark-sql_2.10-1.6.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-sql_2.10/1.5.1/spark-sql_2.10-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-sql_2.10/1.6.1/spark-sql_2.10-1.6.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-sql_2.10/1.5.1/spark-sql_2.10-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.spark:spark-streaming_2.10:1.6.1">
<library name="Maven: org.apache.spark:spark-streaming_2.10:1.5.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming_2.10/1.6.1/spark-streaming_2.10-1.6.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming_2.10/1.5.1/spark-streaming_2.10-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming_2.10/1.6.1/spark-streaming_2.10-1.6.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming_2.10/1.5.1/spark-streaming_2.10-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming_2.10/1.6.1/spark-streaming_2.10-1.6.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming_2.10/1.5.1/spark-streaming_2.10-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.spark:spark-unsafe_2.10:1.6.1">
<library name="Maven: org.apache.spark:spark-unsafe_2.10:1.5.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-unsafe_2.10/1.6.1/spark-unsafe_2.10-1.6.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-unsafe_2.10/1.5.1/spark-unsafe_2.10-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-unsafe_2.10/1.6.1/spark-unsafe_2.10-1.6.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-unsafe_2.10/1.5.1/spark-unsafe_2.10-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-unsafe_2.10/1.6.1/spark-unsafe_2.10-1.6.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-unsafe_2.10/1.5.1/spark-unsafe_2.10-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: org.apache.xbean:xbean-asm5-shaded:4.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/xbean/xbean-asm5-shaded/4.4/xbean-asm5-shaded-4.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/xbean/xbean-asm5-shaded/4.4/xbean-asm5-shaded-4.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/xbean/xbean-asm5-shaded/4.4/xbean-asm5-shaded-4.4-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.roaringbitmap:RoaringBitmap:0.5.11">
<library name="Maven: org.roaringbitmap:RoaringBitmap:0.4.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/roaringbitmap/RoaringBitmap/0.5.11/RoaringBitmap-0.5.11.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/roaringbitmap/RoaringBitmap/0.4.5/RoaringBitmap-0.4.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/roaringbitmap/RoaringBitmap/0.5.11/RoaringBitmap-0.5.11-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/roaringbitmap/RoaringBitmap/0.4.5/RoaringBitmap-0.4.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/roaringbitmap/RoaringBitmap/0.5.11/RoaringBitmap-0.5.11-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/roaringbitmap/RoaringBitmap/0.4.5/RoaringBitmap-0.4.5-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.scala-lang:scala-library:2.10.5">
<library name="Maven: org.scala-lang:scala-library:2.10.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.10.5/scala-library-2.10.5.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.10.4/scala-library-2.10.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.10.5/scala-library-2.10.5-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.10.4/scala-library-2.10.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.10.5/scala-library-2.10.5-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.10.4/scala-library-2.10.4-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: org.spark-project.hive:hive-cli:1.2.1.spark">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/spark-project/hive/hive-cli/1.2.1.spark/hive-cli-1.2.1.spark.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/spark-project/hive/hive-cli/1.2.1.spark/hive-cli-1.2.1.spark-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/spark-project/hive/hive-cli/1.2.1.spark/hive-cli-1.2.1.spark-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.tachyonproject:tachyon-client:0.8.2">
<library name="Maven: org.tachyonproject:tachyon-client:0.7.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-client/0.8.2/tachyon-client-0.8.2.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-client/0.7.1/tachyon-client-0.7.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-client/0.8.2/tachyon-client-0.8.2-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-client/0.7.1/tachyon-client-0.7.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-client/0.8.2/tachyon-client-0.8.2-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-client/0.7.1/tachyon-client-0.7.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.tachyonproject:tachyon-underfs-hdfs:0.8.2">
<library name="Maven: org.tachyonproject:tachyon-underfs-hdfs:0.7.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-hdfs/0.8.2/tachyon-underfs-hdfs-0.8.2.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-hdfs/0.7.1/tachyon-underfs-hdfs-0.7.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-hdfs/0.8.2/tachyon-underfs-hdfs-0.8.2-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-hdfs/0.7.1/tachyon-underfs-hdfs-0.7.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-hdfs/0.8.2/tachyon-underfs-hdfs-0.8.2-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-hdfs/0.7.1/tachyon-underfs-hdfs-0.7.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.tachyonproject:tachyon-underfs-local:0.8.2">
<library name="Maven: org.tachyonproject:tachyon-underfs-local:0.7.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-local/0.8.2/tachyon-underfs-local-0.8.2.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-local/0.7.1/tachyon-underfs-local-0.7.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-local/0.8.2/tachyon-underfs-local-0.8.2-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-local/0.7.1/tachyon-underfs-local-0.7.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-local/0.8.2/tachyon-underfs-local-0.8.2-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-local/0.7.1/tachyon-underfs-local-0.7.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: org.tachyonproject:tachyon-underfs-s3:0.8.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-s3/0.8.2/tachyon-underfs-s3-0.8.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-s3/0.8.2/tachyon-underfs-s3-0.8.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/tachyonproject/tachyon-underfs-s3/0.8.2/tachyon-underfs-s3-0.8.2-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.xerial.snappy:snappy-java:1.1.2">
<library name="Maven: org.xerial.snappy:snappy-java:1.1.1.7">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/xerial/snappy/snappy-java/1.1.2/snappy-java-1.1.2.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/xerial/snappy/snappy-java/1.1.1.7/snappy-java-1.1.1.7.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/xerial/snappy/snappy-java/1.1.2/snappy-java-1.1.2-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/xerial/snappy/snappy-java/1.1.1.7/snappy-java-1.1.1.7-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/xerial/snappy/snappy-java/1.1.2/snappy-java-1.1.2-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/xerial/snappy/snappy-java/1.1.1.7/snappy-java-1.1.1.7-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -2,7 +2,52 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="a7505764-040b-48e2-b2fc-8c5b579e595f" name="Default" comment="">
<change beforePath="" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__net_sf_py4j_py4j_0_8_2_1.xml" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/constant/Constants.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/TaskDao.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/factory/DaoFactory.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/TaskDaoImpl.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/demo/Singleton.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/Task.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/jdbc/JDBCHelper.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/mockData/MockData.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/SessionAggrStatAccumulator.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/TaskDaoTest.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/jdbc/JDBCHelperTest.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/json/FastJsonTest.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/test/java/cn/edu/hust/utils/ParamUtilsTest.java" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__joda_time_joda_time_2_9.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__joda_time_joda_time_2_5.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_razorvine_pyrolite_4_9.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__net_razorvine_pyrolite_4_4.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_sf_py4j_py4j_0_9.xml" afterPath="" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_curator_curator_client_2_6_0.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_curator_curator_client_2_1_0_incubating.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_catalyst_2_10_1_6_1.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_launcher_2_10_1_5_1.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_core_2_10_1_6_1.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_hive_2_10_1_5_1.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_hive_2_10_1_6_1.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_core_2_10_1_5_1.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_launcher_2_10_1_6_1.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_catalyst_2_10_1_5_1.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_network_common_2_10_1_6_1.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_network_common_2_10_1_5_1.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_network_shuffle_2_10_1_6_1.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_network_shuffle_2_10_1_5_1.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_sql_2_10_1_6_1.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_sql_2_10_1_5_1.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_streaming_2_10_1_6_1.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_streaming_2_10_1_5_1.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_unsafe_2_10_1_6_1.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_spark_spark_unsafe_2_10_1_5_1.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_xbean_xbean_asm5_shaded_4_4.xml" afterPath="" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_roaringbitmap_RoaringBitmap_0_5_11.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_roaringbitmap_RoaringBitmap_0_4_5.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_scala_lang_scala_library_2_10_5.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_scala_lang_scala_library_2_10_4.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_spark_project_hive_hive_cli_1_2_1_spark.xml" afterPath="" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_tachyonproject_tachyon_client_0_8_2.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_tachyonproject_tachyon_client_0_7_1.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_tachyonproject_tachyon_underfs_hdfs_0_8_2.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_tachyonproject_tachyon_underfs_hdfs_0_7_1.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_tachyonproject_tachyon_underfs_local_0_8_2.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_tachyonproject_tachyon_underfs_local_0_7_1.xml" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_tachyonproject_tachyon_underfs_s3_0_8_2.xml" afterPath="" />
<change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_xerial_snappy_snappy_java_1_1_2.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_xerial_snappy_snappy_java_1_1_1_7.xml" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change beforePath="$PROJECT_DIR$/README.md" afterPath="$PROJECT_DIR$/README.md" />
<change beforePath="$PROJECT_DIR$/UserActionAnalyzePlatform.iml" afterPath="$PROJECT_DIR$/UserActionAnalyzePlatform.iml" />
<change beforePath="$PROJECT_DIR$/pom.xml" afterPath="$PROJECT_DIR$/pom.xml" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.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" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/StringUtils.java" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/StringUtils.java" />
<change beforePath="$PROJECT_DIR$/src/main/resources/conf.properties" afterPath="$PROJECT_DIR$/src/main/resources/conf.properties" />
<change beforePath="$PROJECT_DIR$/target/classes/conf.properties" afterPath="$PROJECT_DIR$/target/classes/conf.properties" />
</list>
<ignored path="$PROJECT_DIR$/out/" />
<ignored path="$PROJECT_DIR$/target/" />
@ -14,36 +59,42 @@
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="ConfigurationManager.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<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="429">
<caret line="29" column="22" lean-forward="false" selection-start-line="29" selection-start-column="22" selection-end-line="29" selection-end-column="22" />
<state relative-caret-position="400">
<caret line="304" column="26" lean-forward="false" selection-start-line="304" selection-start-column="26" selection-end-line="304" selection-end-column="26" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#707#708#0" expanded="true" />
<element signature="e#751#752#0" expanded="true" />
<element signature="e#4523#4748#0" expanded="true" />
<element signature="e#4747#4748#0" expanded="true" />
<element signature="e#4978#7719#0" expanded="true" />
<element signature="e#7718#7719#0" expanded="true" />
<element signature="e#7939#8162#0" expanded="true" />
<element signature="e#8161#8162#0" expanded="true" />
<element signature="e#8415#9429#0" expanded="true" />
<element signature="e#9428#9429#0" expanded="true" />
</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="DateUtils.java" pinned="false" current-in-tab="false">
<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="19">
<caret line="1" column="11" lean-forward="false" selection-start-line="1" selection-start-column="11" selection-end-line="1" selection-end-column="11" />
<state relative-caret-position="636">
<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>
</file>
<file leaf-file-name="pom.xml" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/pom.xml">
<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="1539">
<caret line="81" column="0" lean-forward="false" selection-start-line="81" selection-start-column="0" selection-end-line="81" selection-end-column="0" />
<state relative-caret-position="587">
<caret line="55" column="48" lean-forward="false" selection-start-line="55" selection-start-column="31" selection-end-line="55" selection-end-column="48" />
<folding />
</state>
</provider>
@ -54,6 +105,7 @@
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Interface" />
<option value="Class" />
</list>
</option>
@ -70,13 +122,30 @@
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/until/DateUtils.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/NumberUtils.java" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java" />
<option value="$PROJECT_DIR$/src/test/java/cn/edu/hust/conf/ConfigurationManagerTest.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/demo/Singleton.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/jdbc/JDBCHelper.java" />
<option value="$PROJECT_DIR$/src/test/java/cn/edu/hust/jdbc/JDBCHelperTest.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/TaskDao.java" />
<option value="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/dao.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/factory/DaoFactory.java" />
<option value="$PROJECT_DIR$/src/test/java/cn/edu/hust/json/FastJsonTest.java" />
<option value="$PROJECT_DIR$/src/main/resources/conf.properties" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/mockData/MockData.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/Task.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/StringUtils.java" />
<option value="$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/TaskDaoTest.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/TaskDaoImpl.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/ParamUtils.java" />
<option value="$PROJECT_DIR$/src/test/java/cn/edu/hust/utils/ParamUtilsTest.java" />
<option value="$PROJECT_DIR$/pom.xml" />
<option value="$PROJECT_DIR$/src/test/java/cn/edu/hust/conf/ConfigurationManagerTest.java" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/SessionAggrStatAccumulator.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.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>
@ -102,10 +171,9 @@
<option name="jreName" value="#JAVA_INTERNAL" />
<option name="vmOptions" value="-DarchetypeCatalog=internal" />
</component>
<component name="ProjectFrameBounds">
<option name="y" value="23" />
<component name="ProjectFrameBounds" fullScreen="true">
<option name="width" value="1440" />
<option name="height" value="873" />
<option name="height" value="900" />
</component>
<component name="ProjectInspectionProfilesVisibleTreeState">
<entry key="Project Default">
@ -149,7 +217,6 @@
</navigator>
<panes>
<pane id="Scope" />
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
<expand>
@ -172,28 +239,50 @@
<item name="UserActionAnalyzePlatform" type="b2602c69:ProjectViewProjectNode" />
<item name="UserActionAnalyzePlatform" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="test" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" 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" />
</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="test" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="hust" type="462c0819:PsiDirectoryNode" />
<item name="session" 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="test" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="conf" type="462c0819:PsiDirectoryNode" />
<item name="hust" type="462c0819:PsiDirectoryNode" />
<item name="util" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="AndroidView" />
<pane id="Scratches" />
<pane id="PackagesPane" />
</panes>
</component>
@ -206,9 +295,14 @@
<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" />
</component>
<component name="RecentsManager">
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
<recent name="cn.edu.hust.dao" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/src/main/java/cn/edu/hust/mockData" />
<recent name="$PROJECT_DIR$" />
<recent name="$PROJECT_DIR$/src/main/java/cn/edu/hust/until" />
</key>
@ -225,7 +319,7 @@
</list>
</option>
</component>
<component name="RunManager">
<component name="RunManager" selected="Application.UserVisitAnalyze">
<configuration default="true" type="Applet" factoryName="Applet">
<option name="HTML_USED" value="false" />
<option name="WIDTH" value="400" />
@ -233,6 +327,25 @@
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
<module />
</configuration>
<configuration name="UserVisitAnalyze" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="cn.edu.hust.session.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="MAIN_CLASS_NAME" value="cn.edu.hust.session.UserVisitAnalyze" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="UserActionAnalyzePlatform" />
<envs />
</configuration>
<configuration default="true" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" />
@ -247,19 +360,94 @@
<module name="" />
<envs />
</configuration>
<configuration name="ConfigurationManagerTest.getMethod" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<configuration name="FastJsonTest.test1" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="cn.edu.hust.json.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="UserActionAnalyzePlatform" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="cn.edu.hust.json" />
<option name="MAIN_CLASS_NAME" value="cn.edu.hust.json.FastJsonTest" />
<option name="METHOD_NAME" value="test1" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
</configuration>
<configuration name="JDBCHelperTest.testBatch" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="cn.edu.hust.conf.*" />
<option name="PATTERN" value="cn.edu.hust.jdbc.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="UserActionAnalyzePlatform" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="cn.edu.hust.conf" />
<option name="MAIN_CLASS_NAME" value="cn.edu.hust.conf.ConfigurationManagerTest" />
<option name="METHOD_NAME" value="getMethod" />
<option name="PACKAGE_NAME" value="cn.edu.hust.jdbc" />
<option name="MAIN_CLASS_NAME" value="cn.edu.hust.jdbc.JDBCHelperTest" />
<option name="METHOD_NAME" value="testBatch" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
</configuration>
<configuration name="ParamUtilsTest.test2" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="cn.edu.hust.utils.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="UserActionAnalyzePlatform" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="cn.edu.hust.utils" />
<option name="MAIN_CLASS_NAME" value="cn.edu.hust.utils.ParamUtilsTest" />
<option name="METHOD_NAME" value="test2" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
</configuration>
<configuration name="TaskDaoTest.testDao" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="cn.edu.hust.dao.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="UserActionAnalyzePlatform" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="cn.edu.hust.dao" />
<option name="MAIN_CLASS_NAME" value="cn.edu.hust.dao.TaskDaoTest" />
<option name="METHOD_NAME" value="testDao" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
@ -332,9 +520,20 @@
<option name="PROGRAM_PARAMETERS" />
<predefined_log_file id="idea.log" enabled="true" />
</configuration>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="JUnit.JDBCHelperTest.testBatch" />
<item index="1" class="java.lang.String" itemvalue="JUnit.TaskDaoTest.testDao" />
<item index="2" class="java.lang.String" itemvalue="JUnit.FastJsonTest.test1" />
<item index="3" class="java.lang.String" itemvalue="Application.UserVisitAnalyze" />
<item index="4" class="java.lang.String" itemvalue="JUnit.ParamUtilsTest.test2" />
</list>
<recent_temporary>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="JUnit.ConfigurationManagerTest.getMethod" />
<list size="5">
<item index="0" class="java.lang.String" itemvalue="Application.UserVisitAnalyze" />
<item index="1" class="java.lang.String" itemvalue="JUnit.ParamUtilsTest.test2" />
<item index="2" class="java.lang.String" itemvalue="JUnit.TaskDaoTest.testDao" />
<item index="3" class="java.lang.String" itemvalue="JUnit.FastJsonTest.test1" />
<item index="4" class="java.lang.String" itemvalue="JUnit.JDBCHelperTest.testBatch" />
</list>
</recent_temporary>
</component>
@ -353,6 +552,8 @@
<updated>1529588420966</updated>
<workItem from="1529588426161" duration="1034000" />
<workItem from="1529590333052" duration="2564000" />
<workItem from="1529630336674" duration="15098000" />
<workItem from="1529666057370" duration="10578000" />
</task>
<task id="LOCAL-00001" summary="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成">
<created>1529592741848</created>
@ -372,39 +573,66 @@
<servers />
</component>
<component name="TestHistory">
<history-entry file="ConfigurationManagerTest_getMethod - 2018.06.21 at 22h 58m 01s.xml">
<configuration name="ConfigurationManagerTest.getMethod" configurationId="JUnit" />
<history-entry file="JDBCHelperTest_testQuery - 2018.06.22 at 11h 40m 05s.xml">
<configuration name="JDBCHelperTest.testQuery" configurationId="JUnit" />
</history-entry>
<history-entry file="ParamUtilsTest_test2 - 2018.06.22 at 20h 22m 02s.xml">
<configuration name="ParamUtilsTest.test2" configurationId="JUnit" />
</history-entry>
<history-entry file="ParamUtilsTest_test2 - 2018.06.22 at 20h 27m 14s.xml">
<configuration name="ParamUtilsTest.test2" configurationId="JUnit" />
</history-entry>
<history-entry file="ParamUtilsTest_test2 - 2018.06.22 at 20h 27m 37s.xml">
<configuration name="ParamUtilsTest.test2" configurationId="JUnit" />
</history-entry>
<history-entry file="ParamUtilsTest_test2 - 2018.06.22 at 20h 27m 46s.xml">
<configuration name="ParamUtilsTest.test2" configurationId="JUnit" />
</history-entry>
<history-entry file="TaskDaoTest_testDao - 2018.06.22 at 14h 48m 43s.xml">
<configuration name="TaskDaoTest.testDao" configurationId="JUnit" />
</history-entry>
<history-entry file="TaskDaoTest_testDao - 2018.06.22 at 14h 49m 04s.xml">
<configuration name="TaskDaoTest.testDao" configurationId="JUnit" />
</history-entry>
<history-entry file="TaskDaoTest_testDao - 2018.06.22 at 20h 10m 14s.xml">
<configuration name="TaskDaoTest.testDao" configurationId="JUnit" />
</history-entry>
<history-entry file="TaskDaoTest_testDao - 2018.06.22 at 20h 10m 35s.xml">
<configuration name="TaskDaoTest.testDao" configurationId="JUnit" />
</history-entry>
<history-entry file="TaskDaoTest_testDao - 2018.06.22 at 20h 12m 29s.xml">
<configuration name="TaskDaoTest.testDao" configurationId="JUnit" />
</history-entry>
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="3598000" />
<option name="totallyTimeSpent" value="29274000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="23" width="1440" height="873" extended-state="0" />
<frame x="0" y="0" width="1440" height="900" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="Palette" 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="TODO" 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="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" 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="-1" side_tool="false" content_ui="tabs" />
<window_info id="Messages" 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="false" content_ui="tabs" />
<window_info id="Palette&#9;" 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="Image Layers" 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="Java Enterprise" 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 Analysis" 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="Event Log" 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="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="Run" 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="2" 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="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" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2532189" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.18097281" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Database" 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="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24964234" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI 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" />
<window_info id="Theme Preview" 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="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" 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="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39903265" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" 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="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
@ -412,6 +640,36 @@
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Find" 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="1" side_tool="false" content_ui="tabs" />
</layout>
<layout-to-restore>
<window_info id="Palette" 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="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" 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="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<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.33" 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="4" 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="3" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Database" 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="5" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI 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="4" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="TODO" 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="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" 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="8" side_tool="false" content_ui="tabs" />
<window_info id="Palette&#9;" 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="6" side_tool="false" content_ui="tabs" />
<window_info id="Image Layers" 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="5" side_tool="false" content_ui="tabs" />
<window_info id="Java Enterprise" 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="9" side_tool="false" content_ui="tabs" />
<window_info id="Capture Analysis" 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="7" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" 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="10" 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="11" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.08941345" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Find" 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="1" side_tool="false" content_ui="tabs" />
<window_info id="Theme Preview" 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="8" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" 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="6" side_tool="true" content_ui="tabs" />
</layout-to-restore>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
@ -450,54 +708,122 @@
<option name="LAST_COMMIT_MESSAGE" value="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
<breakpoint-manager>
<option name="time" value="2" />
</breakpoint-manager>
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/DateUtils.java">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1309">
<caret line="11" column="13" lean-forward="false" selection-start-line="11" selection-start-column="13" selection-end-line="11" selection-end-column="13" />
<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 />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/NumberUtils.java">
<entry file="file://$PROJECT_DIR$/src/main/resources/conf.properties">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="247">
<caret line="13" column="20" lean-forward="false" selection-start-line="13" selection-start-column="20" selection-end-line="13" selection-end-column="20" />
<state relative-caret-position="95">
<caret line="5" column="17" lean-forward="false" selection-start-line="5" selection-start-column="17" selection-end-line="5" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/ParamUtils.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="129">
<caret line="10" column="13" lean-forward="false" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" />
<state relative-caret-position="437">
<caret line="23" column="49" lean-forward="false" selection-start-line="23" selection-start-column="49" selection-end-line="23" selection-end-column="49" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/StringUtils.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="-1229">
<caret line="7" column="13" lean-forward="false" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
<state relative-caret-position="2299">
<caret line="136" column="48" lean-forward="false" selection-start-line="136" selection-start-column="45" selection-end-line="136" selection-end-column="48" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/Task.java">
<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>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="532">
<caret line="29" column="22" lean-forward="false" selection-start-line="29" selection-start-column="22" selection-end-line="29" selection-end-column="22" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/ValidUtils.java">
<entry file="file://$PROJECT_DIR$/src/main/resources/conf.properties">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1305">
<caret line="7" column="13" lean-forward="false" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
<state relative-caret-position="19">
<caret line="1" column="11" lean-forward="false" selection-start-line="1" selection-start-column="11" selection-end-line="1" selection-end-column="11" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="-3327">
<caret line="103" column="15" lean-forward="false" selection-start-line="103" selection-start-column="15" selection-end-line="103" selection-end-column="15" />
<folding />
</first_editor>
<second_editor />
<entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1539">
<caret line="81" column="0" lean-forward="false" selection-start-line="81" selection-start-column="0" selection-end-line="81" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/NumberUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="247">
<caret line="13" column="20" lean-forward="false" selection-start-line="13" selection-start-column="20" selection-end-line="13" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/ValidUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1305">
<caret line="7" column="13" lean-forward="false" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
</state>
</provider>
</entry>
@ -505,7 +831,6 @@
<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 />
</state>
</provider>
</entry>
@ -513,7 +838,6 @@
<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 />
</state>
</provider>
</entry>
@ -521,41 +845,268 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="133">
<caret line="7" column="16" lean-forward="false" selection-start-line="7" selection-start-column="16" selection-end-line="7" selection-end-column="16" />
</state>
</provider>
</entry>
<entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/src.zip!/java/util/concurrent/atomic/AtomicInteger.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="372">
<caret line="157" column="8" lean-forward="false" selection-start-line="157" selection-start-column="8" selection-end-line="157" selection-end-column="8" />
</state>
</provider>
</entry>
<entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/src.zip!/java/util/concurrent/LinkedBlockingQueue.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="250">
<caret line="433" column="13" lean-forward="false" selection-start-line="433" selection-start-column="13" selection-end-line="433" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/demo/Singleton.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209">
<caret line="11" column="19" lean-forward="false" selection-start-line="11" selection-start-column="19" selection-end-line="11" selection-end-column="19" />
</state>
</provider>
</entry>
<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="212">
<caret line="107" column="10" lean-forward="false" selection-start-line="107" selection-start-column="10" selection-end-line="107" selection-end-column="10" />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#422#434#0" expanded="false" />
<element signature="e#1428#1429#0" expanded="false" />
<element signature="e#1459#1460#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/jdbc/JDBCHelperTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="434">
<caret line="28" column="4" lean-forward="false" selection-start-line="28" selection-start-column="4" selection-end-line="28" selection-end-column="4" />
<folding>
<element signature="e#167#168#0" expanded="true" />
<element signature="e#243#244#0" expanded="true" />
<element signature="imports" expanded="false" />
<element signature="e#919#1311#0" expanded="false" />
<element signature="e#1310#1311#0" 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="133">
<caret line="7" column="13" lean-forward="false" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#222#223#0" expanded="false" />
<element signature="e#262#263#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/json/FastJsonTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="133">
<caret line="7" column="13" lean-forward="false" selection-start-line="7" selection-start-column="13" selection-end-line="7" selection-end-column="13" />
<folding>
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="429">
<caret line="29" column="22" lean-forward="false" selection-start-line="29" selection-start-column="22" selection-end-line="29" selection-end-column="22" />
<state relative-caret-position="912">
<caret line="52" column="9" lean-forward="true" selection-start-line="52" selection-start-column="9" selection-end-line="52" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/domain/Task.java">
<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>
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/dao/TaskDaoTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="152">
<caret line="10" column="49" lean-forward="false" selection-start-line="10" selection-start-column="49" selection-end-line="10" selection-end-column="49" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/test/java/cn/edu/hust/utils/ParamUtilsTest.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="247">
<caret line="13" column="63" lean-forward="false" selection-start-line="13" selection-start-column="63" selection-end-line="13" selection-end-column="63" />
<folding>
<element signature="imports" expanded="false" />
</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="365">
<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" />
<element signature="e#707#708#0" expanded="true" />
<element signature="e#751#752#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/resources/conf.properties">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="19">
<caret line="1" column="11" lean-forward="false" selection-start-line="1" selection-start-column="11" selection-end-line="1" selection-end-column="11" />
<state relative-caret-position="95">
<caret line="5" column="17" lean-forward="false" selection-start-line="5" selection-start-column="17" selection-end-line="5" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/impl/TaskDaoImpl.java">
<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>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/dao/TaskDao.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="95">
<caret line="5" column="9" lean-forward="false" selection-start-line="5" selection-start-column="9" selection-end-line="5" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/util/ParamUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="484">
<caret line="34" column="61" lean-forward="false" selection-start-line="34" selection-start-column="61" selection-end-line="34" selection-end-column="61" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1539">
<caret line="81" column="0" lean-forward="false" selection-start-line="81" selection-start-column="0" selection-end-line="81" selection-end-column="0" />
<state relative-caret-position="-63">
<caret line="33" column="24" lean-forward="false" selection-start-line="33" selection-start-column="24" selection-end-line="33" selection-end-column="24" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/任务总体流程.png">
<provider selected="true" editor-type-id="images">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="FIRST">
<first_editor relative-caret-position="661">
<caret line="331" column="90" lean-forward="false" selection-start-line="331" selection-start-column="90" selection-end-line="331" selection-end-column="90" />
<folding />
</first_editor>
<second_editor />
</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="266">
<caret line="62" column="25" lean-forward="false" selection-start-line="62" selection-start-column="25" selection-end-line="62" selection-end-column="25" />
<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="587">
<caret line="46" column="82" lean-forward="false" selection-start-line="46" selection-start-column="82" selection-end-line="46" selection-end-column="82" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#294#295#0" expanded="true" />
<element signature="e#326#327#0" expanded="true" />
<element signature="e#394#395#0" expanded="true" />
<element signature="e#426#427#0" expanded="true" />
</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="636">
<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="587">
<caret line="55" column="48" lean-forward="false" selection-start-line="55" selection-start-column="31" selection-end-line="55" selection-end-column="48" />
<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="400">
<caret line="304" column="26" lean-forward="false" selection-start-line="304" selection-start-column="26" selection-end-line="304" selection-end-column="26" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#4523#4748#0" expanded="true" />
<element signature="e#4747#4748#0" expanded="true" />
<element signature="e#4978#7719#0" expanded="true" />
<element signature="e#7718#7719#0" expanded="true" />
<element signature="e#7939#8162#0" expanded="true" />
<element signature="e#8161#8162#0" expanded="true" />
<element signature="e#8415#9429#0" expanded="true" />
<element signature="e#9428#9429#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>

@ -327,3 +327,6 @@ task_param最最重要用来使用JSON的格式来封装用户提交的
完成了数据调研、需求分析、技术方案设计、数据设计以后,正式进入编码实现和功能测试阶段。最后才是性能调优阶段。
## 用户访问Session的比较高端技术
### 自定义Accumulator
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用自定义Accumulator降低维护成本一个就可以搞定很多业务需求

@ -12,7 +12,7 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-core_2.10:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-core_2.10:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.avro:avro-mapred:hadoop2:1.7.7" level="project" />
<orderEntry type="library" name="Maven: org.apache.avro:avro-ipc:1.7.7" level="project" />
<orderEntry type="library" name="Maven: org.apache.avro:avro-ipc:tests:1.7.7" level="project" />
@ -23,12 +23,10 @@
<orderEntry type="library" name="Maven: com.esotericsoftware.minlog:minlog:1.2" level="project" />
<orderEntry type="library" name="Maven: org.objenesis:objenesis:1.2" level="project" />
<orderEntry type="library" name="Maven: com.twitter:chill-java:0.5.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.xbean:xbean-asm5-shaded:4.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-launcher_2.10:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-network-common_2.10:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-network-shuffle_2.10:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.fusesource.leveldbjni:leveldbjni-all:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-unsafe_2.10:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-launcher_2.10:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-network-common_2.10:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-network-shuffle_2.10:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-unsafe_2.10:1.5.1" level="project" />
<orderEntry type="library" name="Maven: net.java.dev.jets3t:jets3t:0.7.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.curator:curator-recipes:2.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.curator:curator-framework:2.4.0" level="project" />
@ -44,9 +42,9 @@
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-log4j12:1.7.10" level="project" />
<orderEntry type="library" name="Maven: com.ning:compress-lzf:1.0.3" level="project" />
<orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.2" level="project" />
<orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.1.7" level="project" />
<orderEntry type="library" name="Maven: net.jpountz.lz4:lz4:1.3.0" level="project" />
<orderEntry type="library" name="Maven: org.roaringbitmap:RoaringBitmap:0.5.11" level="project" />
<orderEntry type="library" name="Maven: org.roaringbitmap:RoaringBitmap:0.4.5" level="project" />
<orderEntry type="library" name="Maven: commons-net:commons-net:2.2" level="project" />
<orderEntry type="library" name="Maven: com.typesafe.akka:akka-remote_2.10:2.3.11" level="project" />
<orderEntry type="library" name="Maven: com.typesafe.akka:akka-actor_2.10:2.3.11" level="project" />
@ -55,7 +53,7 @@
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.5.0" level="project" />
<orderEntry type="library" name="Maven: org.uncommons.maths:uncommons-maths:1.2.2a" level="project" />
<orderEntry type="library" name="Maven: com.typesafe.akka:akka-slf4j_2.10:2.3.11" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang:scala-library:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang:scala-library:2.10.4" level="project" />
<orderEntry type="library" name="Maven: org.json4s:json4s-jackson_2.10:3.2.10" level="project" />
<orderEntry type="library" name="Maven: org.json4s:json4s-core_2.10:3.2.10" level="project" />
<orderEntry type="library" name="Maven: org.json4s:json4s-ast_2.10:3.2.10" level="project" />
@ -76,17 +74,17 @@
<orderEntry type="library" name="Maven: com.thoughtworks.paranamer:paranamer:2.6" level="project" />
<orderEntry type="library" name="Maven: org.apache.ivy:ivy:2.4.0" level="project" />
<orderEntry type="library" name="Maven: oro:oro:2.0.8" level="project" />
<orderEntry type="library" name="Maven: org.tachyonproject:tachyon-client:0.8.2" level="project" />
<orderEntry type="library" name="Maven: org.tachyonproject:tachyon-client:0.7.1" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.4" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
<orderEntry type="library" name="Maven: org.tachyonproject:tachyon-underfs-hdfs:0.8.2" level="project" />
<orderEntry type="library" name="Maven: org.tachyonproject:tachyon-underfs-s3:0.8.2" level="project" />
<orderEntry type="library" name="Maven: org.tachyonproject:tachyon-underfs-local:0.8.2" level="project" />
<orderEntry type="library" name="Maven: net.razorvine:pyrolite:4.9" level="project" />
<orderEntry type="library" name="Maven: net.sf.py4j:py4j:0.9" level="project" />
<orderEntry type="library" name="Maven: org.apache.curator:curator-client:2.1.0-incubating" level="project" />
<orderEntry type="library" name="Maven: org.tachyonproject:tachyon-underfs-hdfs:0.7.1" level="project" />
<orderEntry type="library" name="Maven: org.tachyonproject:tachyon-underfs-local:0.7.1" level="project" />
<orderEntry type="library" name="Maven: net.razorvine:pyrolite:4.4" level="project" />
<orderEntry type="library" name="Maven: net.sf.py4j:py4j:0.8.2.1" level="project" />
<orderEntry type="library" name="Maven: org.spark-project.spark:unused:1.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-sql_2.10:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-catalyst_2.10:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-sql_2.10:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-catalyst_2.10:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.janino:janino:2.7.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.parquet:parquet-column:1.7.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.parquet:parquet-common:1.7.0" level="project" />
@ -95,11 +93,8 @@
<orderEntry type="library" name="Maven: org.apache.parquet:parquet-hadoop:1.7.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.parquet:parquet-format:2.3.0-incubating" level="project" />
<orderEntry type="library" name="Maven: org.apache.parquet:parquet-jackson:1.7.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-hive_2.10:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-hive_2.10:1.5.1" level="project" />
<orderEntry type="library" name="Maven: com.twitter:parquet-hadoop-bundle:1.6.0" level="project" />
<orderEntry type="library" name="Maven: org.spark-project.hive:hive-cli:1.2.1.spark" level="project" />
<orderEntry type="library" name="Maven: commons-cli:commons-cli:1.2" level="project" />
<orderEntry type="library" name="Maven: jline:jline:2.12" level="project" />
<orderEntry type="library" name="Maven: org.spark-project.hive:hive-exec:1.2.1.spark" level="project" />
<orderEntry type="library" name="Maven: javolution:javolution:5.5.1" level="project" />
<orderEntry type="library" name="Maven: log4j:apache-log4j-extras:1.2.17" level="project" />
@ -114,8 +109,10 @@
<orderEntry type="library" name="Maven: org.iq80.snappy:snappy:0.2" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: net.sf.opencsv:opencsv:2.3" level="project" />
<orderEntry type="library" name="Maven: jline:jline:2.12" level="project" />
<orderEntry type="library" name="Maven: org.spark-project.hive:hive-metastore:1.2.1.spark" level="project" />
<orderEntry type="library" name="Maven: com.jolbox:bonecp:0.8.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: commons-cli:commons-cli:1.2" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.derby:derby:10.10.2.0" level="project" />
<orderEntry type="library" name="Maven: org.datanucleus:datanucleus-api-jdo:3.2.6" level="project" />
@ -135,12 +132,12 @@
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.3.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.9" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.5" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-core:3.5.2" level="project" />
<orderEntry type="library" name="Maven: org.datanucleus:datanucleus-core:3.2.10" level="project" />
<orderEntry type="library" name="Maven: org.apache.thrift:libthrift:0.9.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.thrift:libfb303:0.9.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-streaming_2.10:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.spark:spark-streaming_2.10:1.5.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-client:2.6.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-common:2.6.4" level="project" />
<orderEntry type="library" name="Maven: xmlenc:xmlenc:0.52" level="project" />
@ -155,7 +152,6 @@
<orderEntry type="library" name="Maven: org.apache.directory.server:apacheds-i18n:2.0.0-M15" level="project" />
<orderEntry type="library" name="Maven: org.apache.directory.api:api-asn1-api:1.0.0-M20" level="project" />
<orderEntry type="library" name="Maven: org.apache.directory.api:api-util:1.0.0-M20" level="project" />
<orderEntry type="library" name="Maven: org.apache.curator:curator-client:2.6.0" level="project" />
<orderEntry type="library" name="Maven: org.htrace:htrace-core:3.0.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-hdfs:2.6.4" level="project" />
<orderEntry type="library" name="Maven: org.mortbay.jetty:jetty-util:6.1.26" level="project" />
@ -166,6 +162,7 @@
<orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-yarn-client:2.6.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-yarn-server-common:2.6.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-mapreduce-client-shuffle:2.6.4" level="project" />
<orderEntry type="library" name="Maven: org.fusesource.leveldbjni:leveldbjni-all:1.8" level="project" />
<orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-yarn-api:2.6.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-mapreduce-client-core:2.6.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-yarn-common:2.6.4" level="project" />

@ -16,22 +16,22 @@
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.6.1</version>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>1.6.1</version>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.10</artifactId>
<version>1.6.1</version>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.10</artifactId>
<version>1.6.1</version>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>

@ -35,4 +35,41 @@ public class ConfigurationManager {
{
return prop.getProperty(key);
}
/**
*
* @param key
* @return
*/
public static Integer getInteger(String key)
{
String value=getProperty(key);
try
{
Integer result=Integer.valueOf(value);
return result;
}
catch (Exception e)
{
e.printStackTrace();
}
return 0;
}
/**
*
* @param key
* @return
*/
public static Boolean getBoolean(String key)
{
String value=getProperty(key);
if("false".equals(value))
{
return false;
}
return true;
}
}

@ -0,0 +1,59 @@
package cn.edu.hust.constant;
public class Constants {
/**
*
*/
public static final String JDBC_DRIVER="jdbc.driver";
public static final String JDBC_URL="jdbc.url";
public static final String JDBC_USERNAME="jdbc.username";
public static final String JDBC_PSSWORD="jdbc.password";
public static final String JDBC_ACTIVE="jdbc.active";
/**
* Spark
*/
public static final String APP_NAME_SESSION="UserVisitAnalyze";
public static final String SPARK_LOCAL="spark_local";
public static final String FIELD_SESSIONID="sessionId";
public static final String FIELD_SERACH_KEYWORDS="searchKeywords";
public static final String FIELD_CLICK_CATEGORYIDS="clickCategoryIds";
public static final String FIELD_AGE="age";
public static final String FIELD_CITY="city";
public static final String FIELD_SEX="sex";
public static final String FIELD_PROFESSIONAL="professional";
public static final String FIELD_VISIT_LENGTH="visitLength";
public static final String FIELD_STEP_LENGTH="stepLength";
/**
* Spark
*/
public static final String PARAM_STARTTIME ="startDate";
public static final String PARAM_ENDTIME ="endDate";
public static final String PARAM_STARTAGE ="startAge";
public static final String PARAM_ENDAGE ="endAge";
public static final String PARAM_PROFESSONALS ="professionals";
public static final String PARAM_CIYTIES ="cities";
public static final String PARAM_SEX ="sex";
public static final String PARAM_SERACH_KEYWORDS="searchKeywords";
public static final String PARAM_CLICK_CATEGORYIDS="clickCategoryIds";
public static final String SESSION_COUNT = "session_count";
public static final String TIME_PERIOD_1s_3s = "1s_3s";
public static final String TIME_PERIOD_4s_6s = "4s_6s";
public static final String TIME_PERIOD_7s_9s = "7s_9s";
public static final String TIME_PERIOD_10s_30s = "10s_30s";
public static final String TIME_PERIOD_30s_60s = "30s_60s";
public static final String TIME_PERIOD_1m_3m = "1m_3m";
public static final String TIME_PERIOD_3m_10m = "3m_10m";
public static final String TIME_PERIOD_10m_30m = "10m_30m";
public static final String TIME_PERIOD_30m = "30m";
public static final String STEP_PERIOD_1_3 = "1_3";
public static final String STEP_PERIOD_4_6 = "4_6";
public static final String STEP_PERIOD_7_9 = "7_9";
public static final String STEP_PERIOD_10_30 = "10_30";
public static final String STEP_PERIOD_30_60 = "30_60";
public static final String STEP_PERIOD_60 = "60";
}

@ -0,0 +1,7 @@
package cn.edu.hust.dao;
import cn.edu.hust.domain.Task;
public interface TaskDao {
Task findTaskById(Long id);
}

@ -0,0 +1,15 @@
package cn.edu.hust.dao.factory;
import cn.edu.hust.dao.TaskDao;
import cn.edu.hust.dao.impl.TaskDaoImpl;
public class DaoFactory {
/**
* 使
* @return
*/
public static TaskDao getTaskDao()
{
return new TaskDaoImpl();
}
}

@ -0,0 +1,38 @@
package cn.edu.hust.dao.impl;
import cn.edu.hust.dao.TaskDao;
import cn.edu.hust.domain.Task;
import cn.edu.hust.jdbc.JDBCHelper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class TaskDaoImpl implements TaskDao{
@Override
public Task findTaskById(Long id) {
String sql="select * from task where task_id=?";
final Task task=new Task();
JDBCHelper.getInstance().excuteQuery(sql, new Object[]{id}, new JDBCHelper.QueryCallBack() {
@Override
public void process(ResultSet rs) {
try {
if(rs.next())
{
Long id=rs.getLong(1);
String taskName=rs.getString(2);
String createTime=rs.getString(3);
String startTime=rs.getString(4);
String finishTime=rs.getString(5);
String taskType=rs.getString(6);
String taskStatus=rs.getString(7);
String taskParam=rs.getString(8);
task.set(id,taskName,createTime,startTime,finishTime,taskType,taskStatus,taskParam);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
});
return task;
}
}

@ -0,0 +1,59 @@
package cn.edu.hust.demo;
/**
*
*/
public class Singleton {
/**
* 饿线
*/
/**
private static Singleton instance=new Singleton();
private Singleton()
{
}
public static Singleton getInstance()
{
return instance;
}*/
/**
* 线
private static Singleton instance=null;
private Singleton()
{
}
public static Singleton getInstance()
{
if(instance==null) instance=new Singleton();
return instance;
}*/
/**
* 线
*/
private static Singleton instance=null;
private Singleton()
{
}
public static Singleton getInstance()
{
if(instance==null)
{
synchronized (Singleton.class)
{
if(instance==null)
{
instance=new Singleton();
}
}
}
return instance;
}
}

@ -0,0 +1,92 @@
package cn.edu.hust.domain;
import java.io.Serializable;
public class Task implements Serializable{
private Long taskId;
private String taskName;
private String createTime;
private String startTime;
private String finishTime;
private String taskType;
private String taskStatus;
private String taskParam;
public Task() {
}
public void set(Long taskId, String taskName, String createTime, String startTime, String finishTime, String taskType, String taskStatus, String taskParam) {
this.taskId = taskId;
this.taskName = taskName;
this.createTime = createTime;
this.startTime = startTime;
this.finishTime = finishTime;
this.taskType = taskType;
this.taskStatus = taskStatus;
this.taskParam = taskParam;
}
public Long getTaskId() {
return taskId;
}
public void setTaskId(Long taskId) {
this.taskId = taskId;
}
public String getTaskName() {
return taskName;
}
public void setTaskName(String taskName) {
this.taskName = taskName;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getFinishTime() {
return finishTime;
}
public void setFinishTime(String finishTime) {
this.finishTime = finishTime;
}
public String getTaskType() {
return taskType;
}
public void setTaskType(String taskType) {
this.taskType = taskType;
}
public String getTaskStatus() {
return taskStatus;
}
public void setTaskStatus(String taskStatus) {
this.taskStatus = taskStatus;
}
public String getTaskParam() {
return taskParam;
}
public void setTaskParam(String taskParam) {
this.taskParam = taskParam;
}
}

@ -0,0 +1,195 @@
package cn.edu.hust.jdbc;
import cn.edu.hust.conf.ConfigurationManager;
import cn.edu.hust.constant.Constants;
import java.sql.*;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class JDBCHelper {
private static JDBCHelper instance=new JDBCHelper();
//使用阻塞队列
private LinkedBlockingQueue<Connection> queue=new LinkedBlockingQueue<Connection>();
static{
try {
Class.forName(ConfigurationManager.getProperty(Constants.JDBC_DRIVER));
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
*
*
*/
private JDBCHelper(){
int dataSourceSize=ConfigurationManager.getInteger(Constants.JDBC_ACTIVE);
String url=ConfigurationManager.getProperty(Constants.JDBC_URL);
String username=ConfigurationManager.getProperty(Constants.JDBC_USERNAME);
String passward=ConfigurationManager.getProperty(Constants.JDBC_PSSWORD);
try
{
for(int i=0;i<dataSourceSize;i++)
{
Connection connection=DriverManager.getConnection(url,username,passward);
queue.put(connection);
}
}
catch (Exception e)
{
e.printStackTrace();
}
};
public static JDBCHelper getInstance()
{
return instance;
}
/**
*
* 使
* @return
*/
public Connection getConnection()
{
try {
return queue.take();
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
/**
*
* @param sql
* @param params
* @return
*/
public int excuteUpdate(String sql,Object[] params)
{
int re=0;
Connection conn=null;
PreparedStatement statement=null;
try
{
conn=getConnection();
statement=conn.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
statement.setObject(i+1,params[i]);
}
re=statement.executeUpdate();
return re;
}
catch (Exception e)
{
e.printStackTrace();
}
finally {
if(conn!=null)
{
try {
queue.put(conn);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
return re;
}
public static interface QueryCallBack
{
void process(ResultSet rs);
}
/**
*
* 使
* @param sql
* @param params
* @param queryCallBack
*/
public void excuteQuery(String sql,Object[] params,QueryCallBack queryCallBack)
{
Connection conn=null;
PreparedStatement statement=null;
try
{
conn=getConnection();
statement=conn.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
statement.setObject(i+1,params[i]);
}
ResultSet rs=statement.executeQuery();
queryCallBack.process(rs);
}catch (Exception e)
{
}
finally {
if(conn!=null)
{
try {
queue.put(conn);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
/**
* sql
* @param sql
* @param params
* @return
*/
public int[] excuteBatch(String sql,List<Object[]> params)
{
Connection connection=null;
PreparedStatement statement=null;
int[] res=null;
try
{
connection=getConnection();
statement=connection.prepareStatement(sql);
//1.取消自动提交
connection.setAutoCommit(false);
//2.设置参数
for (Object[] param:
params) {
for (int i = 0; i < param.length; i++) {
statement.setObject(i+1,param[i]);
}
statement.addBatch();
}
//3.批量执行
res=statement.executeBatch();
//4.最后一步提交
connection.commit();
return res;
} catch (SQLException e) {
e.printStackTrace();
}
finally {
if(connection!=null)
{
try {
queue.put(connection);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
return res;
}
}

@ -0,0 +1,147 @@
package cn.edu.hust.mockData;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.UUID;
import cn.edu.hust.util.DateUtils;
import cn.edu.hust.util.StringUtils;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructType;
/**
*
* @author Administrator
*
*/
public class MockData {
/**
*
* @param sc
* @param sqlContext
*/
public static void mock(JavaSparkContext sc,
SQLContext sqlContext) {
List<Row> rows = new ArrayList<Row>();
String[] searchKeywords = new String[] {"火锅", "蛋糕", "重庆辣子鸡", "重庆小面",
"呷哺呷哺", "新辣道鱼火锅", "国贸大厦", "太古商场", "日本料理", "温泉"};
String date = DateUtils.getTodayDate();
String[] actions = new String[]{"search", "click", "order", "pay"};
Random random = new Random();
for(int i = 0; i < 100; i++) {
long userid = random.nextInt(100);
for(int j = 0; j < 10; j++) {
String sessionid = UUID.randomUUID().toString().replace("-", "");
String baseActionTime = date + " " + random.nextInt(23);
for(int k = 0; k < random.nextInt(100); k++) {
long pageid = random.nextInt(10);
String actionTime = baseActionTime + ":" + StringUtils.fulfuill(String.valueOf(random.nextInt(59))) + ":" + StringUtils.fulfuill(String.valueOf(random.nextInt(59)));
String searchKeyword = null;
Long clickCategoryId = null;
Long clickProductId = null;
String orderCategoryIds = null;
String orderProductIds = null;
String payCategoryIds = null;
String payProductIds = null;
String action = actions[random.nextInt(4)];
if("search".equals(action)) {
searchKeyword = searchKeywords[random.nextInt(10)];
} else if("click".equals(action)) {
clickCategoryId = Long.valueOf(String.valueOf(random.nextInt(100)));
clickProductId = Long.valueOf(String.valueOf(random.nextInt(100)));
} else if("order".equals(action)) {
orderCategoryIds = String.valueOf(random.nextInt(100));
orderProductIds = String.valueOf(random.nextInt(100));
} else if("pay".equals(action)) {
payCategoryIds = String.valueOf(random.nextInt(100));
payProductIds = String.valueOf(random.nextInt(100));
}
Row row = RowFactory.create(date, userid, sessionid,
pageid, actionTime, searchKeyword,
clickCategoryId, clickProductId,
orderCategoryIds, orderProductIds,
payCategoryIds, payProductIds);
rows.add(row);
}
}
}
JavaRDD<Row> rowsRDD = sc.parallelize(rows);
StructType schema = DataTypes.createStructType(Arrays.asList(
DataTypes.createStructField("date", DataTypes.StringType, true),
DataTypes.createStructField("user_id", DataTypes.LongType, true),
DataTypes.createStructField("session_id", DataTypes.StringType, true),
DataTypes.createStructField("page_id", DataTypes.LongType, true),
DataTypes.createStructField("action_time", DataTypes.StringType, true),
DataTypes.createStructField("search_keyword", DataTypes.StringType, true),
DataTypes.createStructField("click_category_id", DataTypes.LongType, true),
DataTypes.createStructField("click_product_id", DataTypes.LongType, true),
DataTypes.createStructField("order_category_ids", DataTypes.StringType, true),
DataTypes.createStructField("order_product_ids", DataTypes.StringType, true),
DataTypes.createStructField("pay_category_ids", DataTypes.StringType, true),
DataTypes.createStructField("pay_product_ids", DataTypes.StringType, true)));
DataFrame df = sqlContext.createDataFrame(rowsRDD, schema);
df.registerTempTable("user_visit_action");
for(Row _row : df.take(1)) {
System.out.println(_row);
}
/**
* ==================================================================
*/
rows.clear();
String[] sexes = new String[]{"male", "female"};
for(int i = 0; i < 100; i ++) {
long userid = i;
String username = "user" + i;
String name = "name" + i;
int age = random.nextInt(60);
String professional = "professional" + random.nextInt(100);
String city = "city" + random.nextInt(100);
String sex = sexes[random.nextInt(2)];
Row row = RowFactory.create(userid, username, name, age,
professional, city, sex);
rows.add(row);
}
rowsRDD = sc.parallelize(rows);
StructType schema2 = DataTypes.createStructType(Arrays.asList(
DataTypes.createStructField("user_id", DataTypes.LongType, true),
DataTypes.createStructField("username", DataTypes.StringType, true),
DataTypes.createStructField("name", DataTypes.StringType, true),
DataTypes.createStructField("age", DataTypes.IntegerType, true),
DataTypes.createStructField("professional", DataTypes.StringType, true),
DataTypes.createStructField("city", DataTypes.StringType, true),
DataTypes.createStructField("sex", DataTypes.StringType, true)));
DataFrame df2 = sqlContext.createDataFrame(rowsRDD, schema2);
for(Row _row : df2.take(1)) {
System.out.println(_row);
}
df2.registerTempTable("user_info");
}
}

@ -0,0 +1,51 @@
package cn.edu.hust.session;
import cn.edu.hust.constant.Constants;
import cn.edu.hust.util.StringUtils;
import org.apache.spark.AccumulatorParam;
public class SessionAggrStatAccumulator implements AccumulatorParam<String>{
@Override
public String addAccumulator(String s, String t1) {
return add(s,t1);
}
@Override
public String addInPlace(String s, String r1) {
return add(s,r1);
}
//主要用于数据的初始化,这里主要返回一个值就是所有范围区间得的数量
@Override
public String zero(String s) {
return Constants.SESSION_COUNT + "=0|"
+ Constants.TIME_PERIOD_1s_3s + "=0|"
+ Constants.TIME_PERIOD_4s_6s + "=0|"
+ Constants.TIME_PERIOD_7s_9s + "=0|"
+ Constants.TIME_PERIOD_10s_30s + "=0|"
+ Constants.TIME_PERIOD_30s_60s + "=0|"
+ Constants.TIME_PERIOD_1m_3m + "=0|"
+ Constants.TIME_PERIOD_3m_10m + "=0|"
+ Constants.TIME_PERIOD_10m_30m + "=0|"
+ Constants.TIME_PERIOD_30m + "=0|"
+ Constants.STEP_PERIOD_1_3 + "=0|"
+ Constants.STEP_PERIOD_4_6 + "=0|"
+ Constants.STEP_PERIOD_7_9 + "=0|"
+ Constants.STEP_PERIOD_10_30 + "=0|"
+ Constants.STEP_PERIOD_30_60 + "=0|"
+ Constants.STEP_PERIOD_60 + "=0";
}
private String add(String v1,String v2)
{
if(StringUtils.isEmpty(v1)) return v2;
String value=StringUtils.getFieldFromConcatString(v1,"\\|",v2);
if(value!=null)
{
int newValue=Integer.valueOf(value)+1;
StringUtils.setFieldInConcatString(v1,"\\|",v2,String.valueOf(newValue));
}
return v1;
}
}

@ -0,0 +1,352 @@
package cn.edu.hust.session;
import cn.edu.hust.conf.ConfigurationManager;
import cn.edu.hust.constant.Constants;
import cn.edu.hust.dao.TaskDao;
import cn.edu.hust.dao.factory.DaoFactory;
import cn.edu.hust.domain.Task;
import cn.edu.hust.mockData.MockData;
import cn.edu.hust.util.DateUtils;
import cn.edu.hust.util.ParamUtils;
import cn.edu.hust.util.StringUtils;
import cn.edu.hust.util.ValidUtils;
import com.alibaba.fastjson.JSONObject;
import org.apache.spark.Accumulator;
import org.apache.spark.AccumulatorParam;
import org.apache.spark.SparkConf;
import org.apache.spark.SparkContext;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
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.hive.HiveContext;
import org.joda.time.DateTime;
import scala.Tuple2;
import java.util.Date;
/**
*
* 1
* 2
* 3
* 4
* 5
* 6
*/
public class UserVisitAnalyze {
public static void main(String[] args)
{
/**
* spark
*/
SparkConf conf=new SparkConf().setAppName(Constants.APP_NAME_SESSION).setMaster("local[3]");
JavaSparkContext context=new JavaSparkContext(conf);
SQLContext sc=getSQLContext(context.sc());
//生成模拟数据
mock(context,sc);
//拿到相应的Dao组建
TaskDao dao= DaoFactory.getTaskDao();
//从外部传入的参数获取任务的id
Long taskId=ParamUtils.getTaskIdFromArgs(args);
//从数据库中查询出相应的task
Task task=dao.findTaskById(taskId);
JSONObject jsonObject=JSONObject.parseObject(task.getTaskParam());
//获取指定范围内的Sesssion
JavaRDD<Row> sessionRangeDate=getActionRDD(sc,jsonObject);
//按照Sesson进行聚合
JavaPairRDD<String,String> sesssionAggregateInfoRDD=aggregateBySessionId(sc,sessionRangeDate);
//通过条件对RDD进行筛选
// 重构,同时统计
Accumulator<String> sessionAggrStatAccumulator=context.accumulator("",new SessionAggrStatAccumulator());
JavaPairRDD<String,String> filteredSessionRDD=filterSessionAndAggrStat(sesssionAggregateInfoRDD,jsonObject,sessionAggrStatAccumulator);
//session聚合统计统计出访问时长和访问步长的各个区间所占的比例
/**
*
* 1RDD
* 2sesion
* 3session访访
* 4Accumulator
* Spark
* 1RDD
* 2RDD
* 3RDDshufflegroupBykeyreduceBykeysortByKey
* shuffle
* shuffleshuffle
* shuffle
* 4
*
*
*
*/
//关闭spark上下文
context.close();
}
/**
*
* @param sc
* @return
*/
public static SQLContext getSQLContext(SparkContext sc)
{
boolean local= ConfigurationManager.getBoolean(Constants.SPARK_LOCAL);
if(local)
{
return new SQLContext(sc);
}
return new HiveContext(sc);
}
private static void mock(JavaSparkContext context,SQLContext sc)
{
boolean local= ConfigurationManager.getBoolean(Constants.SPARK_LOCAL);
if(local)
{
MockData.mock(context,sc);
}
}
/**
*
* @param sc
* @param taskParam
* @return
*/
private static JavaRDD<Row> getActionRDD(SQLContext sc, JSONObject taskParam)
{
String startTime=ParamUtils.getParam(taskParam,Constants.PARAM_STARTTIME);
String endTime=ParamUtils.getParam(taskParam,Constants.PARAM_ENDTIME);
String sql="select *from user_visit_action where date>='"+startTime+"' and date<='"+endTime+"'";
DataFrame df=sc.sql(sql);
return df.javaRDD();
}
private static JavaPairRDD<String,String> aggregateBySessionId(SQLContext sc, JavaRDD<Row> sessionRangeDate) {
/**
* map
*/
JavaPairRDD<String,Row> sessionActionPair=sessionRangeDate.mapToPair(new PairFunction<Row, String,Row>() {
@Override
public Tuple2<String, Row> call(Row row) throws Exception {
return new Tuple2<String, Row>(row.getString(2),row);
}
});
/**
* sessionId
*/
JavaPairRDD<String,Iterable<Row>> sessionActionGrouped=sessionActionPair.groupByKey();
JavaPairRDD<Long,String> sessionPartInfo=sessionActionGrouped.mapToPair(new PairFunction<Tuple2<String, Iterable<Row>>, Long, String>() {
@Override
public Tuple2<Long, String> call(Tuple2<String, Iterable<Row>> stringIterableTuple2) throws Exception {
String sessionId=stringIterableTuple2._1;
Iterable<Row> rows=stringIterableTuple2._2;
StringBuffer searchKeywords=new StringBuffer();
StringBuffer clickCategoryIds=new StringBuffer();
Long userId=null;
Date startTime=null;
Date endTime=null;
int stepLength=0;
for (Row row:rows)
{
if(userId==null)
userId=row.getLong(1);
String searchKeyword=row.getString(5);
Long clickCategoryId=row.getLong(6);
//判断是否需要拼接
if(StringUtils.isNotEmpty(searchKeyword))
{
if(!searchKeywords.toString().contains(searchKeyword))
searchKeywords.append(searchKeyword+",");
}
if(clickCategoryId!=null)
{
if(!clickCategoryId.toString().contains(String.valueOf(clickCategoryId)))
clickCategoryIds.append(String.valueOf(clickCategoryId)+",");
}
//计算session开始时间和结束时间
Date actionTime= DateUtils.parseTime(row.getString(4));
if(startTime==null)
startTime=actionTime;
if(endTime==null)
endTime=null;
if(actionTime.before(startTime))
{
startTime=actionTime;
}
if(actionTime.after(endTime))
{
endTime=actionTime;
}
stepLength++;
}
//访问时长(s)
Long visitLengtth=(endTime.getTime()-startTime.getTime())/1000;
String searchKeywordsInfo=StringUtils.trimComma(searchKeywords.toString());
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;
return new Tuple2<Long, String>(userId,info);
}
});
//查询所有的用户数据
String sql="select * from user_info";
JavaRDD<Row> userInfoRDD=sc.sql(sql).javaRDD();
//将用户信息映射成map
JavaPairRDD<Long,Row> userInfoPariRDD=userInfoRDD.mapToPair(new PairFunction<Row, Long, Row>() {
@Override
public Tuple2<Long, Row> call(Row row) throws Exception {
return new Tuple2<Long, Row>(row.getLong(0),row);
}
});
//将两个信息join在一起
JavaPairRDD<Long,Tuple2<String,Row>> tuple2JavaPairRDD=sessionPartInfo.join(userInfoPariRDD);
/**
* session
*/
JavaPairRDD<String,String> sessionInfo=tuple2JavaPairRDD.mapToPair(new PairFunction<Tuple2<Long,Tuple2<String,Row>>, String, String>() {
@Override
public Tuple2<String, String> call(Tuple2<Long, Tuple2<String, Row>> longTuple2Tuple2) throws Exception {
String sessionPartInfo=longTuple2Tuple2._2._1;
Row userInfo=longTuple2Tuple2._2._2;
//拿到需要的用户信息
int age=userInfo.getInt(3);
String professional=userInfo.getString(4);
String city=userInfo.getString(5);
String sex=userInfo.getString(6);
//拼接字符串
String fullInfo=sessionPartInfo+"|"+Constants.FIELD_AGE+"="+age+"|"
+Constants.FIELD_PROFESSIONAL+"="+professional+"|"+Constants.FIELD_CITY+"="+city+"|"+Constants.FIELD_SEX+"="+sex;
String session=StringUtils.getFieldFromConcatString(sessionPartInfo,"\\|",Constants.FIELD_SESSIONID);
return new Tuple2<String, String>(session,fullInfo);
}
});
return sessionInfo;
}
/**
* session
* @param sessionInfoRDD
* @param taskParam
* @param sessionAggrStatAccumulator
* @return
*/
private static JavaPairRDD<String,String> filterSessionAndAggrStat(JavaPairRDD<String, String> sessionInfoRDD, final JSONObject taskParam, final Accumulator<String> sessionAggrStatAccumulator){
//得到条件
String startAge=ParamUtils.getParam(taskParam,Constants.PARAM_STARTAGE);
String endAge=ParamUtils.getParam(taskParam,Constants.PARAM_ENDAGE);
String professionals=ParamUtils.getParam(taskParam,Constants.PARAM_PROFESSONALS);
String cities=ParamUtils.getParam(taskParam,Constants.PARAM_CIYTIES);
String sex= ParamUtils.getParam(taskParam,Constants.PARAM_SEX);
String keyWords=ParamUtils.getParam(taskParam,Constants.PARAM_SERACH_KEYWORDS);
String categoryIds=ParamUtils.getParam(taskParam,Constants.PARAM_CLICK_CATEGORYIDS);
//拼接时间
String _paramter=(startAge!=null?Constants.PARAM_STARTAGE+"="+startAge+"|":"")+
(endAge!=null?Constants.PARAM_ENDAGE+"="+endAge+"|":"")+(professionals!=null?Constants.PARAM_PROFESSONALS+"="+professionals+"|":"")+
(cities!=null?Constants.PARAM_CIYTIES+"="+cities+"|":"")+(sex!=null?Constants.PARAM_SEX+"="+sex+"|":"")+
(keyWords!=null?Constants.PARAM_SERACH_KEYWORDS+"="+keyWords+"|":"")+(categoryIds!=null?Constants.PARAM_CLICK_CATEGORYIDS+"="+categoryIds+"|":"");
if(_paramter.endsWith("\\|"))
_paramter=_paramter.substring(0,_paramter.length()-1);
final String paramter=_paramter;
JavaPairRDD<String,String> filteredSessionRDD=sessionInfoRDD.filter(new Function<Tuple2<String, String>, Boolean>() {
@Override
public Boolean call(Tuple2<String, String> tuple2) throws Exception {
String sessionInfo=tuple2._2;
//按照条件进行过滤
//按照年龄进行过滤
if(!ValidUtils.between(sessionInfo,Constants.FIELD_AGE,paramter,Constants.PARAM_STARTAGE,Constants.PARAM_ENDAGE))
return false;
//按照职业进行过滤
if(!ValidUtils.in(sessionInfo,Constants.FIELD_PROFESSIONAL,paramter,Constants.PARAM_PROFESSONALS))
return false;
//按照城市进行过滤
if(!ValidUtils.in(sessionInfo,Constants.FIELD_CITY,paramter,Constants.PARAM_CIYTIES))
return false;
//按照性别进行筛选
if(!ValidUtils.equal(sessionInfo,Constants.FIELD_SEX,paramter,Constants.PARAM_SEX))
return false;
//按照搜索词进行过滤,只要有一个搜索词即可
if(!ValidUtils.in(sessionInfo,Constants.FIELD_SERACH_KEYWORDS,paramter,Constants.PARAM_PROFESSONALS))
return false;
if(!ValidUtils.in(sessionInfo,Constants.FIELD_CLICK_CATEGORYIDS,paramter,Constants.FIELD_CLICK_CATEGORYIDS))
return false;
//如果经过了之前的所有的过滤条件,也就是满足用户筛选条件
sessionAggrStatAccumulator.add(Constants.SESSION_COUNT);
//计算出访问时长和访问步长的范围并进行相应的累加
Long visitLength=Long.valueOf(StringUtils.getFieldFromConcatString(sessionInfo,"\\|",Constants.FIELD_VISIT_LENGTH));
Long stepLength=Long.valueOf(StringUtils.getFieldFromConcatString(sessionInfo,"\\|",Constants.FIELD_STEP_LENGTH));
//使用函数进行统计
calculateVisitLength(visitLength);
calculateStepLength(stepLength);
return true;
}
//统计访问时长的数量
private void calculateVisitLength(Long visitLegth)
{
if(visitLegth>=1&&visitLegth<=3)
sessionAggrStatAccumulator.add(Constants.TIME_PERIOD_1s_3s);
else if(visitLegth>=4&&visitLegth<=6)
sessionAggrStatAccumulator.add(Constants.TIME_PERIOD_4s_6s);
else if(visitLegth>=7&&visitLegth<=9)
sessionAggrStatAccumulator.add(Constants.TIME_PERIOD_7s_9s);
else if(visitLegth>=10&&visitLegth<=30)
sessionAggrStatAccumulator.add(Constants.TIME_PERIOD_10s_30s);
else if(visitLegth>30&&visitLegth<=60)
sessionAggrStatAccumulator.add(Constants.TIME_PERIOD_30s_60s);
else if(visitLegth>60&&visitLegth<=180)
sessionAggrStatAccumulator.add(Constants.TIME_PERIOD_1m_3m);
else if(visitLegth>180&&visitLegth<=600)
sessionAggrStatAccumulator.add(Constants.TIME_PERIOD_3m_10m);
else if(visitLegth>600&&visitLegth<=1800)
sessionAggrStatAccumulator.add(Constants.TIME_PERIOD_10m_30m);
else if(visitLegth>1800)
sessionAggrStatAccumulator.add(Constants.TIME_PERIOD_30m);
}
//统计访问步长的数量
private void calculateStepLength(Long stepLength)
{
if(stepLength>=1&&stepLength<=3)
sessionAggrStatAccumulator.add(Constants.STEP_PERIOD_1_3);
else if(stepLength>=4&&stepLength<=6)
sessionAggrStatAccumulator.add(Constants.STEP_PERIOD_4_6);
else if(stepLength>=7&&stepLength<=9)
sessionAggrStatAccumulator.add(Constants.STEP_PERIOD_7_9);
else if(stepLength>=10&&stepLength<=30)
sessionAggrStatAccumulator.add(Constants.STEP_PERIOD_10_30);
else if(stepLength>30&&stepLength<=60)
sessionAggrStatAccumulator.add(Constants.STEP_PERIOD_30_60);
else if(stepLength>60)
sessionAggrStatAccumulator.add(Constants.STEP_PERIOD_60);
}
});
return filteredSessionRDD;
}
}

@ -1,5 +1,6 @@
package cn.edu.hust.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
@ -127,5 +128,15 @@ public class DateUtils {
public static String formatTime(Date date) {
return TIME_FORMAT.format(date);
}
public static Date parseTime(String time)
{
try {
return TIME_FORMAT.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}

@ -64,10 +64,12 @@ public class StringUtils {
String delimiter, String field) {
String[] fields = str.split(delimiter);
for(String concatField : fields) {
String fieldName = concatField.split("=")[0];
String fieldValue = concatField.split("=")[1];
if(fieldName.equals(field)) {
return fieldValue;
if(concatField.split("=").length==2) {
String fieldName = concatField.split("=")[0];
String fieldValue = concatField.split("=")[1];
if (fieldName.equals(field)) {
return fieldValue;
}
}
}
return null;

@ -1,2 +1,6 @@
key1=value1
key2=value2
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://10.211.55.16:3306/BigDataPlatm?useUnicode=true&&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
jdbc.active=10
spark.local=true;

@ -0,0 +1,14 @@
package cn.edu.hust.dao;
import cn.edu.hust.dao.factory.DaoFactory;
import cn.edu.hust.domain.Task;
import org.junit.Test;
public class TaskDaoTest {
@Test
public void testDao()
{
Task task=DaoFactory.getTaskDao().findTaskById(1L);
System.out.println(task.getTaskName()+":"+task.getTaskParam());
};
}

@ -0,0 +1,49 @@
package cn.edu.hust.jdbc;
import org.junit.Test;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class JDBCHelperTest {
@Test
public void testUpdate()
{
String sql="insert into user(username,age) values(?,?)";
Object[] params={"zhangsan",12};
JDBCHelper.getInstance().excuteUpdate(sql,params);
}
@Test
public void testBatch()
{
String sql="insert into user(username,age) values(?,?)";
List<Object[]> params=new ArrayList();
params.add(new Object[]{"lisi",23});
params.add(new Object[]{"wangwu",28});
JDBCHelper.getInstance().excuteBatch(sql,params);
}
@Test
public void testQuery()
{
String sql="select * from user where username=?";
Object[] params={"zhangsan"};
JDBCHelper.getInstance().excuteQuery(sql, params, new JDBCHelper.QueryCallBack() {
@Override
public void process(ResultSet rs) {
try {
if(rs.next())
{
System.out.println("结果是"+rs.getInt(2));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
});
}
}

@ -0,0 +1,17 @@
package cn.edu.hust.json;
import com.alibaba.fastjson.JSONArray;
import org.junit.Test;
public class FastJsonTest {
/**
* Json
*/
@Test
public void test1()
{
String json="[{'name':'Tom','age':23},{'name':'LiLi','age':24}]";
JSONArray array=JSONArray.parseArray(json);
System.out.println(array.getJSONObject(0).get("name"));
}
}

@ -0,0 +1,16 @@
package cn.edu.hust.utils;
import cn.edu.hust.util.ParamUtils;
import com.alibaba.fastjson.JSONObject;
import org.junit.Test;
public class ParamUtilsTest {
@Test
public void test2()
{
String json="{\"startAge\":[\"10\"],\"endAge\":[\"34\"],\"startDate\":[\"2018-06-22\"],\"endDate\":[\"2018-06-22\"]}";
JSONObject param=JSONObject.parseObject(json);
//param.getJSONArray("startAge");
System.out.println(ParamUtils.getParam(param,"startDate"));
}
}

@ -1,2 +1,6 @@
key1=value1
key2=value2
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://10.211.55.16:3306/BigDataPlatm?useUnicode=true&&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
jdbc.active=10
spark.local=true;

Loading…
Cancel
Save