首頁(yè)技術(shù)文章正文

如何利用Spark過(guò)濾品類的行為類型?

更新時(shí)間:2023-07-12 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

在main()方法中,首先使用filter()算子過(guò)濾aggregationRDD每一行數(shù)據(jù)中行為類型為加入購(gòu)物車和購(gòu)買的數(shù)據(jù),只保留行為類型為查看的數(shù)據(jù),然后使用mapToPair()算子對(duì)過(guò)濾結(jié)果進(jìn)行轉(zhuǎn)換,獲取每一行數(shù)據(jù)中品類被查看次數(shù)和品類ID數(shù)據(jù),最終將轉(zhuǎn)換結(jié)果加載到getViewCategoryRDD.具體代碼如下。

JavaPairRDD<String, Integer> getViewCategoryRDD=aggregationRDD
    .filter (new Function<Tuple2<Tuple2<String, String>, Integer>
                           , Boolean> () {
       @override
       public Boolean call(Tuple2<Tuple2<String;String>
                , Integer> tuple2) throws Exception {
           //獲取行為類型
           String action =tuple2._1._2;
           return action.equals("view");
       }
       }).mapToPair(
               new PairFunction<Tuple2<Tuple2<String, String>
                      , Integer>, String, Integer>() {
                   @override
                   public Tuple2<String, Integer>
                   call(Tuple2<Tuple2<String, String>, Integer> tuple2)
                          throws Exception {
                      return new Tuple2<> (tuple2._1._1:tuple2 ._2):
                   }
               });

上述代碼中,第9行通過(guò)equals()方法判斷獲取的行為類型是否為view(查看)并將判斷城果作為返回值,若返回值為True則進(jìn)行后續(xù)轉(zhuǎn)換操作。

在main()方法中,首先使用filter()算子過(guò)濾aggregationRDD每一行數(shù)據(jù)中行為類型為查看和購(gòu)買的數(shù)據(jù),只保留行為類型為加入購(gòu)物車的數(shù)據(jù),然后使用mapToPair()算子對(duì)過(guò)濾結(jié)果進(jìn)行轉(zhuǎn)換,獲取每一行數(shù)據(jù)中品類被加入購(gòu)物車次數(shù)和品類ID數(shù)據(jù),最終將轉(zhuǎn)換結(jié)果加載到getCartCategoryRDD,具體代碼如下。

JavaPairRDD<String,Integer> getCartCategoryRDD =aggregationRDD
.filter (new Function<Tuple2<Tuple2<String, String>, Integer>
, Boolean>() {
@override
public Boolean call(Tuple2<Tuple2<String, String>
, Integer> tuple2) throws Exception {
String action =tuple2._1._2:
return action.equals("cart"):
}
}).mapToPair(new PairFunction<Tuple2<Tuple2<String, String>
,Integer>,String,Integer>(){
@oerride
public Tuple2<String, Integer>
call (Tuple2<Tuple2<String, String>, Integer> tuple2)
throws Exception {
return new Tuple2<> (tuple2._1._1,tuple2._2);
}
}):

 上述代碼中,第9行通過(guò)equals()方法判斷獲取的行為類型是否為view(查看)并將判斷城果作為返回值,若返回值為True則進(jìn)行后續(xù)轉(zhuǎn)換操作。

在main()方法中,首先使用filter()算子過(guò)濾aggregationRDD每一行數(shù)據(jù)中行為類型為查看和購(gòu)買的數(shù)據(jù),只保留行為類型為加入購(gòu)物車的數(shù)據(jù),然后使用mapToPair()算子對(duì)過(guò)濾結(jié)果進(jìn)行轉(zhuǎn)換,獲取每一行數(shù)據(jù)中品類被加入購(gòu)物車次數(shù)和品類ID數(shù)據(jù),最終將轉(zhuǎn)換結(jié)果加載到getCartCategoryRDD,具體代碼如下。

JavaPairRDD<String,Integer> getCartCategoryRDD =aggregationRDD
        .filter(new Function<Tuple2<Tuple2<String, String>, Integer>
               , Boolean>() {
           @override
           public Boolean call(Tuple2<Tuple2<String, String>
                   , Integer> tuple2) throws Exception {
              String action =tuple2._1._2:
              return action.equals("cart"):
           }
        }).mapToPair(new PairFunction<Tuple2<Tuple2<String, String>
              ,Integer>,String,Integer>(){
           @oerride
           public Tuple2<String, Integer>
           call (Tuple2<Tuple2<String, String>, Integer> tuple2)
                   throws Exception {
              return new Tuple2<> (tuple2._1._1,tuple2._2);
           }
        });

上述代碼中,第8行通過(guò)equals()方法判斷獲取的行為類型是否為cart(加入購(gòu)物車)并將判斷結(jié)果作為返回值,若返回值為True則進(jìn)行后續(xù)轉(zhuǎn)換操作。

使用filter()算子過(guò)濾aggregationRDD每一行數(shù)據(jù)中行為類型為查看和加入購(gòu)物車的數(shù)據(jù),只保留行為類型為購(gòu)買的數(shù)據(jù),然后使用apToPair()算子對(duì)過(guò)濾結(jié)果進(jìn)行轉(zhuǎn)換,獲取每一行數(shù)據(jù)中品類被購(gòu)買次數(shù)和品類ID數(shù)據(jù),最終將轉(zhuǎn)換結(jié)果加載到getPurchaseCategoryRDD,具體代碼如下。

上述代碼中,第8行通過(guò)equals()方法判斷獲取的行為類型是否為purchase(購(gòu)買)并將判斷結(jié)果作為返回值,若返回值為True則進(jìn)行后續(xù)轉(zhuǎn)換操作。


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!