文档章节

SparkSQL内置函数统计uv实例

别寒
 别寒
发布于 2017/07/28 14:45
字数 378
阅读 7
收藏 0
点赞 0
评论 0
package com.hhb.spark.sql

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

/**
  * Created by dell on 2017/7/28.
  */
object DailyUV {
  def main(args: Array[String]) {
    val conf = new SparkConf()
      .setAppName("DailyUV")
      .setMaster("local")
      .set("spark.testing.memory", "2147480000")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)

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

    // 构造用户访问日志数据,并创建dataframe
    // 模拟用户访问日志,日志用逗号隔开,第一列日期,第二栏用户id
    val userAccesslog = Array(
      "2017-07-01,1122",
      "2017-07-01,1122",
      "2017-07-01,1123",
      "2017-07-01,1124",
      "2017-07-01,1124",
      "2017-07-01,1123",
      "2017-07-02,1124",
      "2017-07-02,1124",
      "2017-07-02,1123",
      "2017-07-02,1124",
      "2017-07-03,1124"
    )
    val userAccessLogRDD = sc.parallelize(userAccesslog, 5)

    // 将模拟出来的用户访问日志RDD,转换为dataframe
    // 首先将普通的rdd转换为元素为row的rdd
    val userAccessLogRowRDD = userAccessLogRDD
      .map{ log => Row(log.split(",")(0), log.split(",")(1).toInt) }
    // 构造dataframe的元数据
    val structType = StructType(Array(
      StructField("date", StringType, true),
      StructField("userid", IntegerType, true)
    ))

    // 使用sqlcontext创建dataframe
    val userAccessLogRowDF = sqlContext.createDataFrame(userAccessLogRowRDD, structType)

    // 这里正式开始使用spark1.5.x提供的最新特效 内置函数
    /**
      * 聚合函数的用法
      * 首先,对dataFrame调用groupBy方法,对某一列进行分组
      * 然后,调用agg方法,第一个参数必须传入之前在groupBy()方法中出现的字段
      * 第二个参数,传入countDistinct、sum、first等,spark提供的内置函数
      * 内置函数中,传入的参数,也是用单引号作为前缀的其他的字段
      */
    userAccessLogRowDF.groupBy("date")
      .agg('date, countDistinct('userid))
      .map{ row => Row(row(1), row(2)) }
      .collect()
      .foreach(println)



  }
}

© 著作权归作者所有

共有 人打赏支持
别寒
粉丝 30
博文 268
码字总数 136120
作品 0
永州
程序员
阿里年薪50WJAVA工程师转大数据学习路线!

大数据有两个方向,一个是偏计算机的,另一个是偏经济的。你学过Java,所以你可以偏将计算机的。 Java程序员想转大数据可行吗?Java是全世界使用人数最多的编程语言。不少程序员选择Java做为...

JAVA丶学习
04/25
0
0
Spark SQL 用户自定义函数UDF、用户自定义聚合函数UDAF 教程(Java踩坑教学版)

在Spark中,也支持Hive中的自定义函数。自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似tochar,todate等 UDAF(User- Defined Aggregation Funcation...

青夜之衫
2017/12/04
0
0
丹露 datav数据大屏经验总结

11/21/2017 11:31:46 AM 第一版 丹露成都网络技术有限公司 运维部:周龙波 11/27/2017 2:04:32 PM 第二版 新增 pv/uv 折线图 访问来源 地图 的内网IP过滤功能以及使用新的时间段函数 12/6/2...

dlpy
01/03
0
0
PySpark SQL常用语法

许多数据分析师都是用HIVE SQL跑数,这里我建议转向PySpark: PySpark的语法是从左到右串行的,便于阅读、理解和修正;SQL的语法是从内到外嵌套的,不方便维护; PySpark继承Python优美、简洁...

真依然很拉风
05/14
0
0
一个SparkSQL作业的一生可能只是一集琅琊榜

Spark是时下很火的计算框架,由UC Berkeley AMP Lab研发,并由原班人马创建的Databricks负责商业化相关事务。而SparkSQL则是Spark之上搭建的SQL解决方案,主打交互查询场景。 人 人都说Spark...

Zero零_度
2016/06/09
54
0
sparkSQL的整体实现框架

这篇博客的目的是让那些初次接触sparkSQL框架的童鞋们,希望他们对sparkSQL整体框架有一个大致的了解,降低他们进入spark世界的门槛,避免他们在刚刚接触sparkSQL时,不知所措,不知道该学习...

hffzkl
06/26
0
0
高级SQL优化(三)

SQL*PLUS下使用AUTOTRACE 优化后在使用autotrace: 使用STA能快速定位性能瓶颈,从而为性能优化提供了准确的依据! 实时SQL监视 2.实时SQL监视示例2-使用优化提示强制监视 私塾在线原创...

Artemjor
2014/01/09
470
1
数值型统计工具--jtstats

在平时开发中,经常要希望统计一些性能之类的数值型的统计,后来了解到 statsD,它的使用非常简单。后来想自己写写统计,打发时间,因些创建了JTStats这个项目。 JTStats 主要用于数值型的统...

墨鱼仔
2014/12/18
634
0
网站流量UV是什么意思?什么是流量UV/PV/IP

雅虎统计基础数据定义 PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。 UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内...

晨曦之光
2012/03/09
248
0
网站流量PV是什么意思?UV是什么意思?

雅虎统计基础数据定义 PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。 UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内...

anlve
2017/05/19
6
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
11分钟前
1
1
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
11
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部