jch 1 ay önce
ebeveyn
işleme
c786a42576

+ 1 - 4
src/main/scala/com/aliyun/odps/spark/examples/myUtils/ConvertUtils.java

@@ -26,9 +26,6 @@ public class ConvertUtils {
         // parse info
         Map<String, String> c9Map = userOriginInfo.get("alg_recsys_feature_user_share_return_stat");
         UserShareReturnProfile userProfile = JSON.parseObject(toJson(c9Map), UserShareReturnProfile.class);
-        if (null != userProfile) {
-            userProfile.list2map();
-        }
         Map<String, Map<String, String>> historyVideoMap = list2Map(videoSeq);
 
         Map<String, Map<String, String[]>> c7Map = FeatureTransform.parseUCFScore(userOriginInfo.get("alg_mid_feature_sharecf"));
@@ -54,7 +51,7 @@ public class ConvertUtils {
         FeatureTransform.getVideoBaseFeature("r", currentMs, rankInfo, featMap);
         FeatureTransform.getVideoFeature(vid, videoOriginInfo, featMap);
 
-        // head & rank cross feature
+        // head&rank cross feature
         FeatureTransform.getHeadRankVideoCrossFeature(headInfo, rankInfo, featMap);
 
         // user profile & rank cross

+ 4 - 4
src/main/scala/com/aliyun/odps/spark/examples/myUtils/FeatureTransform.java

@@ -186,10 +186,10 @@ public class FeatureTransform {
         if (null == rankVideo || rankVideo.isEmpty()) {
             return;
         }
-        getVideoAttrSRCrossFeature("c9_c1s", rankVideo.getOrDefault("merge_first_level_cate", ""), profile.getC1_m(), featMap);
-        getVideoAttrSRCrossFeature("c9_c2s", rankVideo.getOrDefault("merge_second_level_cate", ""), profile.getC2_m(), featMap);
-        getVideoAttrSRCrossFeature("c9_l1s", rankVideo.getOrDefault("festive_label1", ""), profile.getL1_m(), featMap);
-        getVideoAttrSRCrossFeature("c9_l2s", rankVideo.getOrDefault("festive_label2", ""), profile.getL2_m(), featMap);
+        getVideoAttrSRCrossFeature("c9_c1s", rankVideo.getOrDefault("merge_first_level_cate", ""), profile.getC1_s(), featMap);
+        getVideoAttrSRCrossFeature("c9_c2s", rankVideo.getOrDefault("merge_second_level_cate", ""), profile.getC2_s(), featMap);
+        getVideoAttrSRCrossFeature("c9_l1s", rankVideo.getOrDefault("festive_label1", ""), profile.getL1_s(), featMap);
+        getVideoAttrSRCrossFeature("c9_l2s", rankVideo.getOrDefault("festive_label2", ""), profile.getL2_s(), featMap);
     }
 
     private static void getRSCrossFeature(String prefix, long currentMs, int maxN, List<UserSRBO> list, Map<String, String> rankVideo, Map<String, Map<String, String>> hVideoMap, Map<String, Double> featMap) {

+ 16 - 24
src/main/scala/com/aliyun/odps/spark/examples/myUtils/UserShareReturnProfile.java

@@ -19,14 +19,10 @@ public class UserShareReturnProfile {
     private List<UserSRBO> m_r_s;   // max_return_seq(最大回流序列)
     private List<UserSRBO> l_s_s;    // last_share_seq(最近分享序列)
     private List<UserSRBO> l_r_s;   // last_return_seq(最近回流序列)
-    private List<VideoAttrSRBO> c1_s;   // cate1_seq(merge_first_level_cate序列-回流率)
-    private List<VideoAttrSRBO> c2_s;   // cate2_seq(merge_second_level_cate序列-回流率)
-    private List<VideoAttrSRBO> l1_s;   // label1_seq(festive_label1序列-回流率)
-    private List<VideoAttrSRBO> l2_s;   // label2_seq(festive_label2序列-回流率)
-    private Map<String, VideoAttrSRBO> c1_m;   // cate1_map(merge_first_level_cate序列-回流率)
-    private Map<String, VideoAttrSRBO> c2_m;   // cate2_map(merge_second_level_cate序列-回流率)
-    private Map<String, VideoAttrSRBO> l1_m;   // label1_map(festive_label1序列-回流率)
-    private Map<String, VideoAttrSRBO> l2_m;   // label2_map(festive_label2序列-回流率)
+    private Map<String, VideoAttrSRBO> c1_s;   // cate1_seq(merge_first_level_cate序列-回流率)
+    private Map<String, VideoAttrSRBO> c2_s;   // cate2_seq(merge_second_level_cate序列-回流率)
+    private Map<String, VideoAttrSRBO> l1_s;   // label1_seq(festive_label1序列-回流率)
+    private Map<String, VideoAttrSRBO> l2_s;   // label2_seq(festive_label2序列-回流率)
 
     public void setM_s_s(String data) {
         this.m_s_s = JSON.parseArray(data, UserSRBO.class);
@@ -45,34 +41,30 @@ public class UserShareReturnProfile {
     }
 
     public void setC1_s(String data) {
-        this.c1_s = JSON.parseArray(data, VideoAttrSRBO.class);
+        this.c1_s = parseVideoAttrSR(data);
     }
 
     public void setC2_s(String data) {
-        this.c2_s = JSON.parseArray(data, VideoAttrSRBO.class);
+        this.c2_s = parseVideoAttrSR(data);
     }
 
     public void setL1_s(String data) {
-        this.l1_s = JSON.parseArray(data, VideoAttrSRBO.class);
+        this.l1_s = parseVideoAttrSR(data);
     }
 
     public void setL2_s(String data) {
-        this.l2_s = JSON.parseArray(data, VideoAttrSRBO.class);
+        this.l2_s = parseVideoAttrSR(data);
     }
 
-    public void list2map() {
-        this.c1_m = list2map(this.c1_s);
-        this.c2_m = list2map(this.c2_s);
-        this.l1_m = list2map(this.l1_s);
-        this.l2_m = list2map(this.l2_s);
-    }
-
-    private Map<String, VideoAttrSRBO> list2map(List<VideoAttrSRBO> list) {
+    private Map<String, VideoAttrSRBO> parseVideoAttrSR(String data) {
         Map<String, VideoAttrSRBO> map = new HashMap<>();
-        if (null != list) {
-            for (VideoAttrSRBO v : list) {
-                if (null != v) {
-                    map.put(v.getNa(), v);
+        if (null != data && !data.isEmpty()) {
+            List<VideoAttrSRBO> list = JSON.parseArray(data, VideoAttrSRBO.class);
+            if (null != list) {
+                for (VideoAttrSRBO v : list) {
+                    if (null != v) {
+                        map.put(v.getNa(), v);
+                    }
                 }
             }
         }