文档章节

SparkSQL内置函数统计每日销售金额实例

别寒
 别寒
发布于 2017/07/28 15:11
字数 215
阅读 15
收藏 1
package com.hhb.spark.sql

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.{Row, SQLContext}
import org.apache.spark.sql.types.{StructField, _}
import org.apache.spark.sql.functions._

/**
  * Created by dell on 2017/7/28.
  */
object DailySale {

  def main(args: Array[String]) {
    val conf = new SparkConf()
      .setAppName("DailySale")
      .setMaster("local")
      .set("spark.testing.memory", "2147480000")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)

    // 要使用spark sql 内置函数,就必须在这里导入sqlcontext下的隐式转换
    import sqlContext.implicits._

    // 模拟数据
    val userSalelog = Array(
      "2017-07-01,55.05,1133",
      "2017-07-01,54.05,",
      "2017-07-01,35.05,1144",
      "2017-07-02,25.05,1155",
      "2017-07-01,65.05,1123",
      "2017-07-01,25.15,",
      "2017-07-02,65.05,1123",
      "2017-07-02,25.15,"
    )
    val userSaleLogRDD = sc.parallelize(userSalelog, 5)

    // 有效销售日志的过滤(过滤掉无效的日志)
    val filterdUserSaleLogRDD = userSaleLogRDD
      .filter{ log => if (log.split(",").length == 3) true else false }

    val userSaleLogRowRDD = filterdUserSaleLogRDD
      .map{
        log => Row(log.split(",")(0),
        log.split(",")(1).toDouble)
      }

    val structType = StructType(Array(
      StructField("date", StringType, true),
      StructField("sale_amount", DoubleType, true)
    ))

    // 转成dataframe
    val userSaleLogDF = sqlContext.createDataFrame(userSaleLogRowRDD, structType)

    // 开始进行每日销售额的统计
    userSaleLogDF.groupBy("date")
      .agg('date, sum('sale_amount))
      .map{ row => Row(row(1), row(2)) }
      .collect()
      .foreach(println)

  }

}

© 著作权归作者所有

共有 人打赏支持
别寒
粉丝 30
博文 271
码字总数 137605
作品 0
永州
程序员
私信 提问
开源电子商务网店程序--海盗云商

海盗云商(Haidao)网店系统是一个用php+MySQL进行开发的网店类网站,网站包括了PC端和手机端两种界面。 海盗云商2.0内置功能介绍(更多功能通过插件及模块拓展) 站点设置:负责商城全局站点设...

古人灏
2016/02/03
11.3K
5
DataTable中数据记录的统计

DataTable中数据记录的统计 我们在使用Sql Server这些数据库时,可以轻松的通过Sum、Aver、Count等统计出相关结果,那么,在已经把数据检索出来的DataSet(DataTable)中呢?特别是通过Web S...

晨曦之光
2012/03/09
41
0
PHP+MySQL实现对一段时间内每天数据统计优化操作实例

在互联网项目中,对项目的数据分析必不可少。通常会统计某一段时间内每天数据总计变化趋势调整营销策略。下面来看以下案例。 案例 在电商平台中通常会有订单表,记录所有订单信息。现在我们需...

这真的是一个帅气的名字
07/16
0
0
单点开源免费CRM系统--SunshineCRM

单点开源免费CRM系统是单点科技开发的,基于GPLv3协议发行,针对中小企业管理活动,提供客户关系管理员(CRM),进销存(JXC),人力资源(HRM),后勤(办公用品,固定资产,公物维修)、物业管理等功...

王纪云
2011/03/01
105.7K
6
HAWQ取代传统数仓实践(十七)——事实表技术之累积度量

累积度量指的是聚合从序列内第一个元素到当前元素的数据,例如统计从每年的一月到当前月份的累积销售额。本篇说明如何在销售订单示例中实现累积月销售数量和金额,并对数据仓库模式、初始装载...

wzy0623
2017/06/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

降压变换器 Buck

特点 输入输出极性相同。 工作过程 在 MOS 导通时,输入电源通过 L 和 C 滤波后向负载端提供电流;当 MOS 断开后,L 通过二极管续流,保持负载电流连续。输出电压因为占空比的作用,不会超过...

colinux
今天
1
0
Apache日志不记录访问静态文件,访问日志切割,静态元素过期时间设置

Apache配置不记录访问静态文件的日志 网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录 vhost原始配置 <VirtualHost *:80> ServerAdmin test@163.com DocumentRoo...

野雪球
今天
3
0
聊聊storm的ICommitterTridentSpout

序 本文主要研究一下storm的ICommitterTridentSpout ICommitterTridentSpout storm-core-1.2.2-sources.jar!/org/apache/storm/trident/spout/ICommitterTridentSpout.java public interface......

go4it
今天
4
0
Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
3
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部