spark SQL学习(案例-统计每日uv)

Spark-SQL之每日top3热点搜索词案例统计 实现思路 1、针对原始数据(HDFS文件),获取输入的RDD 2、使用filter算子,去针对输入RDD中的数据,进行数据过滤,过滤出符合查询条件的数据。 2.1 普通的做法:直接在fitler算子函数中,使用外部的查询条件(Map),但是,这样做的话,是不是查询条件Map,会发送到每一个task上一份副本。(性能并不好) 2.2 优化后的做法:将查询条件,封装为Broadcast广播变... 阅读详情

 

需求:统计每日uv

package wujiadong_sparkSQL


import org.apache.spark.sql.{Row, SQLContext}
import org.apache.spark.sql.types._
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.functions._
/**
  * Created by Administrator on 2017/3/6.
  */
object DailyUV {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("dailyuv")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)

    val userAccesslog = Array(
      "2017-01-01,1122",
      "2017-01-01,1122",
      "2017-01-01,1123",
      "2017-01-01,1124",
      "2017-01-01,1124",
      "2017-01-02,1122",
      "2017-01-01,1121",
      "2017-01-01,1123",
      "2017-01-01,1123"

    )
    val AccesslogRDD = sc.parallelize(userAccesslog,2)
    //val AccesslogRDD = sc.textFile("hdfs://master:9000/student/2016113012/data/userAccesslog.txt").map(_.split(","))
    //通过StructType直接指定每个字段的schema
    val schema = StructType(
      Array(
        StructField("date",StringType,true),
        StructField("userid",IntegerType,true)
      )
    )

    //j将普通rdd映射到rowRDD
    val RowRDD = AccesslogRDD.map(log => Row(log.split(",")(0),log.split(",")(1).toInt))
    //将schema信息映射到RowRDD上,即创建dataframe
    val df = sqlContext.createDataFrame(RowRDD,schema)
    //要使用spark SQL的内置函数需导入SQLContext下的隐士转换

    import sqlContext.implicits._
    df.groupBy("date") //根据日期分组
        .agg('date,countDistinct('userid))//根据日期聚合,然后根据用户id,注意这里的语法是‘引号
         .map(row => Row(row(1),row(2))).collect().foreach(println)


    //uv含义和业务,每天都有很多用户访问,每个用户可能每天访问很多次,uv指的是对用户进行去重以后的访问次数




  }

}



运行结果

hadoop@master:~/wujiadong$ spark-submit --class wujiadong_sparkSQL.DailyUV  --executor-memory 500m --total-executor-cores 2 /home/hadoop/wujiadong/wujiadong.spark.jar 
17/03/06 21:01:52 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
17/03/06 21:01:53 WARN SparkConf: 
SPARK_CLASSPATH was detected (set to ':/home/hadoop/bigdata/hive/lib/mysql-connector-java-5.1.26-bin.jar').
This is deprecated in Spark 1.0+.

Please instead use:
 - ./spark-submit with --driver-class-path to augment the driver classpath
 - spark.executor.extraClassPath to augment the executor classpath
        
17/03/06 21:01:53 WARN SparkConf: Setting 'spark.executor.extraClassPath' to ':/home/hadoop/bigdata/hive/lib/mysql-connector-java-5.1.26-bin.jar' as a work-around.
17/03/06 21:01:53 WARN SparkConf: Setting 'spark.driver.extraClassPath' to ':/home/hadoop/bigdata/hive/lib/mysql-connector-java-5.1.26-bin.jar' as a work-around.
17/03/06 21:01:55 INFO Slf4jLogger: Slf4jLogger started
17/03/06 21:01:55 INFO Remoting: Starting remoting
17/03/06 21:01:56 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.131:57493]
17/03/06 21:01:57 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
17/03/06 21:01:58 WARN MetricsSystem: Using default name DAGScheduler for source because spark.app.id is not set.
[2017-01-01,4]                                                                  
[2017-01-02,1]
17/03/06 21:02:21 INFO RemoteActorRefProvider$RemotingTerminator: Shutting down remote daemon.
17/03/06 21:02:21 INFO RemoteActorRefProvider$RemotingTerminator: Remote daemon shut down; proceeding with flushing remote transports.
17/03/06 21:02:21 INFO RemoteActorRefProvider$RemotingTerminator: Remoting shut down.
Spark SQL之内置函数 目录 一:DataFrame的内置函数作用 二:DataFram的的内置函数等 三:案例实战 四:混合函数 一:DataFrame的内置函数作用 DataFrame的函数并会执行后立即返回一个结果值,而是返回一个Column对象,用于在并行作业中进行求值 Column可以用在DataFrame的操作之中,比如select,filter,groupBy等。函数的输入值,也可以是C... 阅读详情

相关推荐

[Spark应用]-- 实现uv统计(使用内置函数)

废话不多说,具体实现代码如下 import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.sql.SQLContext import org.apache.spark.sql.Row import org.apache.spark.sql.types.StructTyp...

欢迎来到我的博客,一起探索代码里的世界! 4237

spark sql uv_spark SQL学习(案例-统计每日uv)

需求:统计每日uvpackage wujiadong_sparkSQLimport org.apache.spark.sql.{Row, SQLContext}import org.apache.spark.sql.types._import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.sql.function...

weixin_39649736的博客 190

基于PWM的汽车仪表步进电机微步驱动优化实践

本文深入探讨了基于PWM的微步驱动技术,用于优化汽车仪表步进电机的运行性能。通过将传统的分步驱动升级为PWM微步细分驱动,利用正弦/余弦查表法合成旋转磁场,有效消除了指针抖动与噪声,实现了指针的平滑、精准运动。文章以STM32和VID2905电机为例,提供了详细的硬件连接、代码实现及高级优化技巧,为提升汽车仪表体验提供了实用方案。

weixin_29169505的博客 514

SQL练习题——店铺UV、访客信息

数据表 问题: 每个店铺的UV(访客数) 每个店铺访问次数top3的访客信息。输出店铺名称、访客id、访问次数 问题1解答: select shop, count(distinct user_id) as count_user from jd group by shop 问题2解答: 根据题意,我们可以先将问题拆分: 1)获取每个店铺的访客次数信息 select shop, user_id, count(user_id) as count_user from jd group by sho

ws19920726的博客 2172

STM32+4G模块+MQTT协议:从零构建稳定可靠的物联网通讯链路

本文详细介绍了如何利用STM32、4G模块和MQTT协议构建稳定可靠的物联网通讯链路。通过硬件选型、AT指令配置和MQTT连接实战,帮助开发者实现低功耗、高可靠性的数据传输,特别适合户外和移动场景应用。

weixin_29191081的博客 334

利用Android系统漏洞实现后台弹窗(外弹)

关键:从 Android 8.0(API 26)开始,禁止使用 context.sendBroadcast() 发送隐式广播(即没有指定 setPackage() 或明确组件的广播)。demo核心代码展示利用Android显示系统和广播系统的漏洞实现在后台弹窗的功能,支持最新Android15,16版本。核心功能都是在so层去做,大量使用了jni反调, 如果要上架到应用市场,需要对代码做进一步混淆,加固以应对市场安全扫描。3,开启虚拟显示窗口,这是个透明像素窗口。5,可开启一个线程,调用这个外弹窗口。

2018,再出发~ 1318

MYSQL统计UV和PV_日志分析_统计每日各时段的的PV,UV

第一步: 需求分析需要哪些字段(时间:每一天,各个时段,id,url,guid,tracTime)需要分区为天/时PV(统计记录数)UV(guid去重)第二步: 实施步骤建Hive表,表列分隔符和文件保持一至Load数据到Hive表中写HiveSql进行统计,将结果放入Hive另一张表中(数据清洗)从Hive的另一张表中的数据导出到Mysql,使用sqoop网站项目从Mysql读取这张表的信息预期...

weixin_42118770的博客 2242

【图像去噪】基于加权核范数最小化算法实现图像去噪附matlab代码

1 简介 WNNM是一种约束矩阵奇异值稀疏性的低秩算法,在NNM理论基础上增加了核范数权重,有效利用了自然图像的先验信息并提高了核范数的灵活性. 2 部分代码 ​clcclear allclose allnSig = 100;O_Img = double(imread('Monarch.png'));​randn('seed', 0);N_Img = O_Img + nSig* randn(size(O_Img)); ..

qq_59747472的博客 3118

spark jdbc mysql_Spark Streaming通过JDBC操作数据库

1. 前言1.1 说明本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取。Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Streaming也提供了两种API与之对应,其中spark-streaming-kafka-0-8支持Kafka 0.8.2.1以后的Broker;spark-streaming-kafka...

weixin_34917128的博客 307

如何在 DevOps 管道中实现 AI?

AI与DevOps的融合(AIOps)正在重塑软件开发生命周期。本文系统阐述了AI在DevOps中的五大应用场景:智能监控、自动化测试、安全防护、CI/CD优化和事件管理,并提出了六步实施框架:痛点识别、工具选型、流程集成、智能监控、MLOps和治理合规。通过Netflix、Google等企业的实践案例,验证了AI在提升部署效率(降低40%故障率)、缩短问题解决时间(MTTR减少60%)方面的显著价值,同时指出数据质量、模型偏差等实施挑战。研究表明,战略性地

介绍AWS Azure GCP devops Terraform 等技术 498

【Bluedroid】BLE连接过程详解

Bluedroid BLE的链接过程包括扫描、连接和通信三个基本步骤。通过这些步骤,中央设备和外围设备之间可以建立起稳定、高效的通信链路,实现数据传输和控制操作。

byte轻骑兵的技术小窝 1879

spark sql uv_spark SQL学习(案例统计每日uv)

需求:统计每日uvpackage wujiadong_sparkSQLimport org.apache.spark.sql.{Row, SQLContext}import org.apache.spark.sql.types._import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.sql.function...

weixin_36213756的博客 174

【WRF安装第三期(Ubuntu)】搭建WRF编译所需系统-第三方依赖库安装

WRF安装第三期:搭建WRF编译所需系统-第三方依赖库安装

WW、forever的博客 3139

79、Spark SQL之与Spark Core整合之每日top3热点搜索词统计案例实战

每日top3热点搜索词统计案例实战 数据格式: 日期 用户 搜索词 城市 平台 版本 需求: 筛选出符合查询条件(城市、平台、版本)的数据 统计出每天搜索uv排名前3的搜索词 按照每天的top3搜索词的uv搜索总次数,倒序排序 将数据保存到hive表中 实现思路分析 针对原始数据(HDFS文件),获取输入的RDD 使用filter算子,去针对输入RDD中的数据,进行数据过滤,过滤出...

ZJ__ZFH的博客 1942

【cmd】Win10家庭版找不到 gpedit.msc (组策略)的解决方法

目录 一、创建cmd文件 二、以“管理员身份”运行“gpedit.cmd”文件 三、运行“gpedit.msc”命令查看组策略 一、创建cmd文件 (1)新建一个文件名为“gpedit.txt”的txt文本文档: (2)文本中写入以下内容: @echo off pushd "%~dp0" dir /b C:\Windows\servicing\Packages\Micros...

顾三殇 —— 博客空间(软件测试) 4万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

48、Spark SQL之与Spark Core整合之每日top3热点搜索词统计案例实战

一、概述1、需求分析数据格式: 日期 用户 搜索词 城市 平台 版本 需求: 1、筛选出符合查询条件(城市、平台、版本)的数据 2、统计出每天搜索uv排名前3的搜索词 3、按照每天的top3搜索词的uv搜索总次数,倒序排序 4、将数据保存到hive表中 ###数据 keyword.txt 2018-10-1:leo:water:beijing:android:1.0 2018...

weixin_30830327的博客 210

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

spark-SQL综合练习每日关键字的UV统计-scala

spark-SQL综合练习每日关键字的UV统计-scala1. 开发环境说明2. 运行环境说明3. 实现的需求如下4. 实现代码如下5. 分步输出的结果如下6. 。。。。。。 1. 开发环境说明 因为我测试了不同的开发环境会出错误,所以可用环境版本说明如下: IntelliJ IDEA 2019.1.1 (Ultimate Edition) JRE: 1.8.0_202-release-1483-...

xuanwenchao的专栏 693

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

72、Spark SQL之内置函数以及每日uv、销售额统计案例实战

Spark 1.5.x版本引入的内置函数 在Spark 1.5.x版本,增加了一系列内置函数到DataFrame API中,并且实现了code-generation的优化。与普通的函数不同,DataFrame的函数并不会执行后立即返回一个结果值,而是返回一个Column对象,用于在并行作业中进行求值。Column可以用在DataFrame的操作之中,比如select,filter,groupBy...

ZJ__ZFH的博客 1688

spark sql uv_Spark Streaming 结合spark sql 计算UV / checkout

package jc.stremingimport java.text.SimpleDateFormatimport com.alibaba.fastjson.JSONimport org.apache.spark.SparkConfimport org.apache.spark.SparkContextimport org.apache.spark.rdd.RDDimport org.apach...

weixin_39554021的博客 105

spark2.x-java-用spark-sql和spark-streaming 统计网站的访客数(uv)

环境: spark2.2.0 JDK1.8 感觉网上关于spark2.0的java程序案例太少了,在这里补充一个,大家有好的案例也可以分享啊 不多说,直接上代码 /** * @author admin * @define 统计网站日用户访问量 * create 2018-01-15 19:55 */ public class DailyUvStreaming { publ

program哲学 2094

新闻网站关键指标离线统计Spark作业

package com.spark.study.sparksql; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.sql.DataFrame; import org.apache.spark.sql.hive.HiveCo...

莫慌 吃口药 425

10.Spark SQL:内置函数以及每日uv

Spark SQL:内置函数以及每日uv java版本: package cn.spark.study.sql; import java.util.Arrays; import java.util.List; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org

认知 行动 坚持 886

每日top3热点搜索词统计案例

数据格式: 日期,用户,搜索词,平台,版本 需求: 1、筛选出符合条件(城市,平台,版本)的数据 2、统计每天搜索uv排名前三的搜索词 3、按照每天的top3搜索词的uv搜索总次数,倒叙排序 4、将数据保存到hive表中 思路分析 1、针对原始数据(HDFS文件),获取输入RDD 2、使用filter算法,针对输入RDD中的数据,进行数据过滤,过滤出符合条件的数据 2.1普通的

JSON_ZJS的博客 2289
上一篇: spark SQL学习(案例-统计每日销售)
下一篇: spark SQL学习(综合案例-日志分析)
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值