Spark十个热门类

import org.apache.spark.{SparkConf, SparkContext}

object Test1 {

  //Top10热门品类
  def main(args: Array[String]): Unit = {

    val sc = new SparkContext(new SparkConf().setMaster("local[4]").setAppName("test"))
    //1、读取数据
    val rdd1 = sc.textFile("datas/user_visit_action.txt")

    //3、统计每个品类点击次数
    //3.1、过滤点击数据
    val clickRdd = rdd1.filter(line=>{
      val arr = line.split("_")
      arr(6)!="-1"
    })
    //3.2、切割
    val clickSplitRdd = clickRdd.map(line=>{
      val arr = line.split("_")
      (arr(6),1)
    })
    //3.3、分组聚合
    val clickNumRdd = clickSplitRdd.reduceByKey(_+_)
    //List( (1,10),(5,30))
    //4、统计每个品类下单次数
    //4.1、过滤下单数据
    val orderRDD = rdd1.filter(line=>{
      val arr = line.split("_")
      arr(8)!="null"
    })

    //4.2、切割
    val orderSplitRdd = orderRDD.flatMap(line=>{
      val arr = line.split("_")
      val ids = arr(8)
      ids.split(",").map(id=> (id,1))
    })
    //4.3、统计下单次数
    val orderNumRdd = orderSplitRdd.reduceByKey(_+_)
    //RDD[ (1,15),(5,5)]
    //5、统计每个品类支付次数
    //5.1、过滤支付数据
    val payRdd = rdd1.filter(line=>{
      val arr = line.split("_")
      arr(10)!="null"
    })
    //5.2、切割
    val paySplitRdd = payRdd.flatMap(line=>{
      val arr = line.split("_")
      val ids = arr(10)
      ids.split(",").map(id=>(id,1))
    })
    //5.3、统计支付次数
    val payNumRdd = paySplitRdd.reduceByKey(_+_)
    //RDD[ (1,2),(5,3)]

    //6、join得到每个品类的点击、支付、下单次数
    val totalRdd = clickNumRdd.leftOuterJoin(orderNumRdd).leftOuterJoin(payNumRdd)

    val totalNumRdd = totalRdd.map{
      case (id,((clickNum,orderNum),payNum)) => (id,clickNum,orderNum.getOrElse(0),payNum.getOrElse(0))
    }
    //7、排序取前十
    totalNumRdd.sortBy({
      case (id,clickNum,orderNum,payNum) => (clickNum,orderNum,payNum)
    },false)
    //8、结果展示
      .collect().take(10).foreach(println(_))

  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里提供一个基于 Spark 的遥感图像分类代码的框架,你需要根据具体的数据和算法进行相应的修改和调整: ```python from pyspark import SparkContext, SparkConf from pyspark.sql import SparkSession from pyspark.ml.feature import PCA from pyspark.ml.classification import RandomForestClassifier from pyspark.ml.evaluation import MulticlassClassificationEvaluator # 初始化 Spark 上下文 conf = SparkConf().setAppName("RemoteSensingClassification") sc = SparkContext(conf=conf) spark = SparkSession(sc) # 读取图像数据 data = spark.read.format("image").load("hdfs://path/to/image/directory") # 图像特征提取 # TODO: 根据具体的算法进行特征提取 # 特征转换 pca = PCA(k=50, inputCol="features", outputCol="pcaFeatures") model = pca.fit(data) transformed = model.transform(data).select("pcaFeatures") # 数据集划分 (trainingData, testData) = transformed.randomSplit([0.7, 0.3]) # 训练分类器 rf = RandomForestClassifier(labelCol="label", featuresCol="pcaFeatures", numTrees=10) model = rf.fit(trainingData) # 模型评估 predictions = model.transform(testData) evaluator = MulticlassClassificationEvaluator(labelCol="label", predictionCol="prediction", metricName="accuracy") accuracy = evaluator.evaluate(predictions) print("Accuracy = %g" % (accuracy)) ``` 其中,需要根据具体的算法进行图像特征提取,并使用 PCA 等算法进行特征转换。同时,需要根据具体的数据调整数据划分比例和分类器参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值