1.环境搭建完成11

2.相关的工具类编写完成1
3.配置文件管理类编写完成1
zxr
劝酒千百 9 months ago
parent 4089d89827
commit a33178593c

@ -4,7 +4,7 @@
<option name="autoReloadType" value="ALL" /> <option name="autoReloadType" value="ALL" />
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="a7505764-040b-48e2-b2fc-8c5b579e595f" name="Default" comment="1.环境搭建完成11&#10;2.相关的工具类编写完成11&#10;3.配置文件管理类编写完成11"> <list default="true" id="a7505764-040b-48e2-b2fc-8c5b579e595f" name="Default" comment="1.环境搭建完成1&#10;2.相关的工具类编写完成1&#10;3.配置文件管理类编写完成1">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/edu/hust/session/UserVisitAnalyze.java" afterDir="false" />
</list> </list>
@ -477,7 +477,7 @@
<workItem from="1734349398416" duration="1738000" /> <workItem from="1734349398416" duration="1738000" />
<workItem from="1734352550638" duration="1153000" /> <workItem from="1734352550638" duration="1153000" />
<workItem from="1734354068325" duration="860000" /> <workItem from="1734354068325" duration="860000" />
<workItem from="1734354940766" duration="3411000" /> <workItem from="1734354940766" duration="5212000" />
</task> </task>
<task id="LOCAL-00001" summary="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成"> <task id="LOCAL-00001" summary="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成">
<created>1529592741848</created> <created>1529592741848</created>
@ -557,7 +557,15 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1734357525655</updated> <updated>1734357525655</updated>
</task> </task>
<option name="localTasksCounter" value="11" /> <task id="LOCAL-00011" summary="1.环境搭建完成1&#10;2.相关的工具类编写完成1&#10;3.配置文件管理类编写完成1">
<option name="closed" value="true" />
<created>1734358371283</created>
<option name="number" value="00011" />
<option name="presentableId" value="LOCAL-00011" />
<option name="project" value="LOCAL" />
<updated>1734358371283</updated>
</task>
<option name="localTasksCounter" value="12" />
<servers /> <servers />
</component> </component>
<component name="TestHistory"> <component name="TestHistory">
@ -680,7 +688,8 @@
<MESSAGE value="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成" /> <MESSAGE value="1.环境搭建完成&#10;2.相关的工具类编写完成&#10;3.配置文件管理类编写完成" />
<MESSAGE value="1.环境搭建完成&#10;2.相关的工具类编写完成11&#10;3.配置文件管理类编写完成11" /> <MESSAGE value="1.环境搭建完成&#10;2.相关的工具类编写完成11&#10;3.配置文件管理类编写完成11" />
<MESSAGE value="1.环境搭建完成11&#10;2.相关的工具类编写完成11&#10;3.配置文件管理类编写完成11" /> <MESSAGE value="1.环境搭建完成11&#10;2.相关的工具类编写完成11&#10;3.配置文件管理类编写完成11" />
<option name="LAST_COMMIT_MESSAGE" value="1.环境搭建完成11&#10;2.相关的工具类编写完成11&#10;3.配置文件管理类编写完成11" /> <MESSAGE value="1.环境搭建完成1&#10;2.相关的工具类编写完成1&#10;3.配置文件管理类编写完成1" />
<option name="LAST_COMMIT_MESSAGE" value="1.环境搭建完成1&#10;2.相关的工具类编写完成1&#10;3.配置文件管理类编写完成1" />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java"> <entry file="file://$PROJECT_DIR$/src/main/java/cn/edu/hust/conf/ConfigurationManager.java">

@ -323,27 +323,82 @@ public class UserVisitAnalyze {
* @param taskParam * @param taskParam
* @return * @return
*/ */
//getActionRDD 方法
private static JavaRDD<Row> getActionRDD(SQLContext sc, JSONObject taskParam) private static JavaRDD<Row> getActionRDD(SQLContext sc, JSONObject taskParam)
{ {
//获取开始时间和结束时间:
//从 taskParam 中获取开始时间 startTime 和结束时间 endTime。
// ParamUtils.getParam 方法用于从 JSONObject 中获取参数值。
String startTime=ParamUtils.getParam(taskParam,Constants.PARAM_STARTTIME); String startTime=ParamUtils.getParam(taskParam,Constants.PARAM_STARTTIME);
String endTime=ParamUtils.getParam(taskParam,Constants.PARAM_ENDTIME); String endTime=ParamUtils.getParam(taskParam,Constants.PARAM_ENDTIME);
//构建SQL查询语句
// 查询表 user_visit_action 中 date 字段在 startTime 和 endTime 之间的所有记录。
String sql="select *from user_visit_action where date>='"+startTime+"' and date<='"+endTime+"'"; String sql="select *from user_visit_action where date>='"+startTime+"' and date<='"+endTime+"'";
//执行SQL查询并获取DataFrame
//使用 SQLContext 执行SQL查询获取查询结果的 DataFrame。
DataFrame df=sc.sql(sql); DataFrame df=sc.sql(sql);
//将DataFrame转换为JavaRDD<Row>
//方便后续的RDD操作。
return df.javaRDD(); return df.javaRDD();
} }
/**
*
* SQLSQL访
* DataFrame JavaRDD<Row>便
*/
/** /**
* PairSessionIdValueRow * PairSessionIdValueRow
* @param sessionRangeDate * @param sessionRangeDate
* @return * @return
*/ */
//getSessonInfoPairRDD 方法
//定义方法签名:
//定义一个静态方法 getSessonInfoPairRDD该方法接受一个 JavaRDD<Row> 类型的参数 sessionRangeDate
// 并返回一个 JavaPairRDD<String, Row>。
private static JavaPairRDD<String,Row> getSessonInfoPairRDD(JavaRDD<Row> sessionRangeDate) { private static JavaPairRDD<String,Row> getSessonInfoPairRDD(JavaRDD<Row> sessionRangeDate) {
//使用 mapToPair 方法:
//使用 mapToPair 方法将 JavaRDD<Row> 转换为 JavaPairRDD<String, Row>。
// mapToPair 方法接受一个 PairFunction 实现类,
// 该实现类用于将每个 Row 对象转换为一个键值对 Tuple2<String, Row>。
return sessionRangeDate.mapToPair(new PairFunction<Row, String, Row>() { return sessionRangeDate.mapToPair(new PairFunction<Row, String, Row>() {
@Override @Override
//实现 PairFunction
//实现 PairFunction 接口的 call 方法。
// call 方法会接受一个 Row 对象作为输入,并返回一个 Tuple2<String, Row>。
public Tuple2<String, Row> call(Row row) throws Exception { public Tuple2<String, Row> call(Row row) throws Exception {
//构造 Tuple2 对象:
//从 Row 对象中提取指定列的值这里是第3列
// 作为键 String并将整个 Row 对象作为值 Row返回一个 Tuple2<String, Row>。
return new Tuple2<String, Row>(row.getString(2),row); return new Tuple2<String, Row>(row.getString(2),row);
} }
}); });
/**
*
* 使 mapToPair Row Tuple2<String, Row>
* Row 3 Row
* Row 便
* getSessonInfoPairRDD JavaRDD<Row> JavaPairRDD<String, Row>
* Row sessionId
* Row
* sessionId
*/
} }
/** /**
@ -352,6 +407,12 @@ public class UserVisitAnalyze {
* @param sessionInfoPairRDD * @param sessionInfoPairRDD
* @return * @return
*/ */
//方法签名:
//定义一个静态方法 aggregateBySessionId
// 该方法接受一个 SQLContext
// 和一个 JavaPairRDD<String, Row> 类型的参数 sessionInfoPairRDD
// 并返回一个 JavaPairRDD<String, String>。
private static JavaPairRDD<String,String> aggregateBySessionId(SQLContext sc, JavaPairRDD<String, Row> sessionInfoPairRDD) { private static JavaPairRDD<String,String> aggregateBySessionId(SQLContext sc, JavaPairRDD<String, Row> sessionInfoPairRDD) {
/** /**
* map * map
@ -368,8 +429,15 @@ public class UserVisitAnalyze {
/** /**
* sessionId * sessionId
*/ */
//根据 sessionId 进行分组:
//使用 groupByKey 方法将 JavaPairRDD<String, Row> 按 sessionId 分组,
// 得到一个 JavaPairRDD<String, Iterable<Row>>
// 其中键为 sessionId值为具有相同 sessionId 的所有 Row 对象的迭代器。
JavaPairRDD<String,Iterable<Row>> sessionActionGrouped=sessionInfoPairRDD.groupByKey(); JavaPairRDD<String,Iterable<Row>> sessionActionGrouped=sessionInfoPairRDD.groupByKey();
//映射生成键值对:
//使用 mapToPair 方法将每个 Tuple2<String, Iterable<Row>> 转换为一个 Tuple2<Long, String>。
// 具体来说,键为 Row 对象中的 userId值为生成的字符串信息。
JavaPairRDD<Long,String> sessionPartInfo=sessionActionGrouped.mapToPair(new PairFunction<Tuple2<String, Iterable<Row>>, Long, String>() { JavaPairRDD<Long,String> sessionPartInfo=sessionActionGrouped.mapToPair(new PairFunction<Tuple2<String, Iterable<Row>>, Long, String>() {
@Override @Override
public Tuple2<Long, String> call(Tuple2<String, Iterable<Row>> stringIterableTuple2) throws Exception { public Tuple2<Long, String> call(Tuple2<String, Iterable<Row>> stringIterableTuple2) throws Exception {

Loading…
Cancel
Save