SparkSQL 内置函数的使用(JAVA与Scala版本)

scala实战之SparkSQL应用实例(单表count和groupby多来源表join等) 前面几篇博客说了如何读取mysql数据库中的表到DataFrame中以及如何将结果写入到mysql中 今天这个实例主要实现应用sparksql完成用户日志数据的提取并转换成DataFrame(我们将其定义为表 user)另外我们要从mysql数据库中load一个用户配置表(这里定义为userinfo)我们将这两个表根据imei号进行join获得用户完整的信息数据 具体的环境见http://bl 阅读详情

SparkSQL 内置函数的使用(JAVA与Scala版本)

agg的使用(根据时间,去重id相同,统计相同时间内的id个数)

Scala版本!

package com.bynear.Scala

import org.apache.spark.sql.functions._
import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}
import org.apache.spark.sql.{Row, SQLContext}
import org.apache.spark.{SparkConf, SparkContext}
object SparkSQLAgg {
  def main(args: Array[String]) {
    val conf = new SparkConf().setMaster("local").setAppName("SparkSQLAgg")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc) //构建SQL上下文

    //要使用Spark SQL的内置函授,就一定要导入SQLContext下的隐式转换
    import sqlContext.implicits._


    val userAccessLog = Array(
      "2016-3-27,1122",
      "2016-3-27,1122",
      "2016-3-27,1123",
      "2016-3-27,1124",
      "2016-3-27,1124",
      "2016-3-28,1122"
    )
    val userAccessRDDLog = sc.parallelize(userAccessLog, 5)
    val userAccessLogRowRDD = userAccessRDDLog.map { log => Row(log.split(",")(0), log.split(",")(1).toInt) }
    val structType = StructType(Array(
      StructField("date", StringType, true),
      StructField("userid", IntegerType, true)))

    val userAccessLogRowDF = sqlContext.createDataFrame(userAccessLogRowRDD, structType);


    userAccessLogRowDF.groupBy("date")
      .agg('date, countDistinct('userid))
      .map {
        row => Row(row(1), row(2))
      }.collect()
      .foreach(println)


  }
}
Java版本!

package com.bynear.spark_sql;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import static org.apache.spark.sql.functions.*;
//一定要引入:
//
//import static org.apache.spark.sql.functions.*;
//否则无法直接使用countDistinct函数。本人在这里也是折腾了很久,最后查官网才发现这个坑的。
public class agg {
    public static void main(String[] args) {
        SparkConf conf = new SparkConf().setAppName("agg").setMaster("local");
        JavaSparkContext sc = new JavaSparkContext(conf);
        SQLContext sqlContext = new SQLContext(sc);
        List<String> list = Arrays.asList(
                "2016-3-27,1122",
                "2016-3-27,1122",
                "2016-3-27,1123",
                "2016-3-27,1124",
                "2016-3-27,1124",
                "2016-3-28,1122"
        );
        JavaRDD<String> userAccessRDDLog = sc.parallelize(list, 5);
        JavaRDD<Row> mapROWRDD = userAccessRDDLog.map(new Function<String, Row>() {
            @Override
            public Row call(String line) throws Exception {
                String[] LineSplit = line.split(",");
                return RowFactory.create(LineSplit[0], Integer.valueOf(LineSplit[1]));
            }
        });
        ArrayList<StructField> fields = new ArrayList<StructField>();
        fields.add(DataTypes.createStructField("date", DataTypes.StringType, true));
        fields.add(DataTypes.createStructField("userid", DataTypes.IntegerType, true));
        StructType structType = DataTypes.createStructType(fields);
        DataFrame userAccessLogRowDF = sqlContext.createDataFrame(mapROWRDD, structType);
        userAccessLogRowDF.groupBy("date").agg(max("userid")).show();


        sc.close();
    }
}
注意点:::

Scala版本中,如果需要使用内置函数,必须引用

import org.apache.spark.sql.functions._
Java版本,如果使用内置函数的话,必须引用

import static org.apache.spark.sql.functions.*;
必须为static 静态的  才可以使用其中的方法!




如何使用spark-submit提交sparkSQL任务 前言 本文介绍了使用java开发spark sql应用程序提交到yarn上运行的全过程,并介绍解决了一些开发和提交中常见的问题。 准备 首先我们要搭建好spark on yarn的集群环境,我是用cdh安装和cloudera manager进行维护的。 这里用到的组件主要有yarn、hdfs和hive。 对于开发人员来说唯一要准备的就是代码开发环境,使用idea创建一个maven项目,在pom.... 阅读详情

相关推荐

java操作kudu及sparksql

首次接触大数据项目,用到了kudu及hadoop,为防忘记故写篇笔记以作参考 1)pom依赖 <!-- https://mvnrepository.com/artifact/org.apache.kudu/kudu-client --> <dependency> <groupId>org.ap...

Losed_memory 759

【spark床头书系列】 import org.apache.spark.sql.functions._ 和 import sparkSession.implicits._区别

import org.apache.spark.sql.functions._ 和 import sparkSession.implicits._示例用法源码区别

wang2leee的博客 632

SPEI计算避坑指南:gma中Distribution和FitMethod参数怎么选?

本文深入探讨了在SPEI计算中如何科学选择gma库中的Distribution和FitMethod参数,帮助研究者避开常见陷阱。详细分析了LogLogistic、Gamma和Pearson3三种分布的适用场景,以及LMoment与MLE拟合方法的优缺点,为气象干旱研究提供实用指南。

weixin_30308101的博客 254

【spark内置函数】常用函数

一、说明 spark框架源码functions.scala文件包含了大量的内置函数,尤其在agg函数中会广泛应用。 使用之前要导入import org.apache.spark.sql.functions._ 这里只列举了一些常用的内置函数,其他的要参考官网。 二、代码示例 package com.dt.spark.Test import com.dt.spark.Test.AggTest.Student import org.apache.spark.sql.{DataFrame, Spar.

hyj 1302

Quartus Prime器件库安装实战:从版本选择到权限避坑指南

本文详细介绍了Quartus Prime器件库的安装全流程,从版本选择、精准下载到权限设置和安装验证。重点解析了版本匹配的黄金法则、管理员权限的必要性以及安装路径的最佳实践,帮助用户避开常见陷阱,确保器件库安装一次成功。

weixin_33713707的博客 516

学Simulink——四开关 Buck‑Boost(FSBB)变换器的无缝模式切换仿真

本文详细介绍了使用Simulink实现四开关Buck-Boost(FSBB)变换器无缝模式切换的仿真方法。FSBB变换器因其输入输出同极性、单电感和双向能量流特性,广泛应用于光伏储能、USB-PD和车载电源等场景。文章重点解决了模式切换中的直通风险和占空比跳变问题,通过统一电压PI控制、Stateflow模式仲裁和200ns死区设计,实现了Buck(26V→24V)、Pass-Through(24V±1V)和Boost(22V)三种工作模式的无缝过渡。仿真结果显示输出电压稳定在12V±0.15V,切换过程无

amy_mhd的博客 67

Spark自定义函数

简单形式 自定义函数直接使用下面的形式引用一个变量或者方法都可以 spark.udf.register[String,String]("avg_get",func =>func.toString.concat("内容")) 自定义聚合函数 定义一个类,实现抽象类方法,然后通过SparkContext注册函数,sql中直接调用 def main(args: Array[String]): Unit = { Logger.getLogger("org").setLevel(Le

qq_44342234的博客 1529

Python爬虫实战:中国土地市场网招拍挂数据抓取与分析

本文详细介绍了如何使用Python爬虫技术从中国土地市场网抓取土地招拍挂数据,并进行初步的数据分析与可视化。文章涵盖了爬虫的基本原理、反爬虫策略应对、数据清洗与存储、数据分析与可视化等多个方面,为土地市场研究者提供了一套完整的数据获取与分析解决方案。

2201_76125261的博客 685

org.apache.spark.sql.functions汇总

org.apache.spark.sql.functions是一个Object,提供了约两百多个函数。 大部分函数与Hive的差不多。 除UDF函数,均可在spark-sql中直接使用。 经过import org.apache.spark.sql.functions._ ,也可以用于Dataframe,Dataset。 大部分支持Column的函数也支持String类型的...

kamisamak的博客 2890

TC8:IPv4_HEADER_01-04

IPv4_HEADER_01: Ensure that the DUT generates an IPv4 Packet with a Total Length greater than or equal to 20 目的 确保DUT生成的IPv4报文的IP头部中的Total Length字段值大于等于20 IPv4协议头部中的Total Length字段表示整个IP数据包的长度,包括IP Header和payload之和,IP首部的长度最少就有20个字节,所以Total Length值肯定大于等于20

jasonj333 3967

【腾讯小龙虾WorkBuddy专栏01】初识WorkBuddy!定位、核心优势、功能界面全解析

【腾讯小龙虾WorkBuddy专栏01】初识WorkBuddy!定位、核心优势、功能界面全解析

AI人人懂 3872

Spark SQL 函数全集

Summary org.apache.spark.sql.functions是一个Object,提供了约两百多个函数。 大部分函数与Hive的差不多。 除UDF函数,均可在spark-sql中直接使用。 经过import org.apache.spark.sql.functions._ ,也可以用于Dataframe,Dataset。 version 2.3.0 大部分支持Colum...

Liam's Blog (AI & BigData) 4万+

基于STM32设计的盲人智能导盲杖

本设计基于STM32单片机,开发了一种面向视障人群的智能导盲杖系统。系统以STM32F103C8T6为核心控制器,集成了超声波测距、语音提示、环境光检测、GPS定位及4G通信等多种功能模块。

650

spark java udf_在spark中使用UDF函数

spark-udf虽然spark.sql.function中的已经包含了大多数常用的函数,但是总有一些场景是内置函数无法满足要求的,此时就需要使用自定义函数了(UDF)。刚好最近用spark时,scala,java,python轮换着用,因此这里总结一下spark中自定义函数的简单用法。这里总结了scala,java,python 三种接口的DataFrame和sparkSQL的自定义函数定义和使...

weixin_36078669的博客 1558

成功解决 OllamaError: status code 400, message: model ‘llama3.2:latest‘ not found 报错

本文针对Ollama更新后出现的OllamaError: status code 400, message: model 'llama3.2:latest' not found报错,分析了其根本原因——2026年1月Ollama将Llama 3.2模型命名从llama3.2:latest改为meta-llama/Llama-3.2:7b-instruct等新格式。解决方案包括:1)使用新模型名称;2)升级Ollama SDK;3)查询确认本地可用模型;4)批量更新旧项目脚本。通过正确适配新命名规则,

博客 1400

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Spark SQL 中UDF的讲解

Spark SQL 中UDF的讲解 User Define Function, 用户自定义函数,简称UDF,存在与很多组件中。 在使用Sparksql的人都遇到了Sparksql所支持的函数太少了的难处,除了最基本的函数,Sparksql所能支撑的函数很少,肯定不能满足正常的项目使用,UDF可以解决问题。 SparkSQL中的UDF相当于是1进1出,UDAF相当于是多进一出,类似

JSON_ZJS的博客 959

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

orc parquet区别 spark_parquet和orc文件的读写(java版)

本门课程多面且深入的讲述了spark SQL的知识点及其使用方式。采用传统数据库的SQL和Spark SQL做对比的手段使的我们很轻易的理解Spark SQL。并且详细讲解了scala和java两门语言怎么使用Spark SQL,其中用scala讲述原理更多的课程可以在51CTO学院中搜索"老汤"---------------------------------------------------...

weixin_39526185的博客 294

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spark系列---SparkSQL(三)读取Txt文件、Json文件、Hive、Mysql数据源(Java、Scala版本)

1.读取txt文件 scala版本 package com.kevin.scala.dataframe import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.SQLContext /** * 读取txt文件转成DataFrame形式操作 */ object DataFrameTx...

Mr.Cao 8780

SparkSQL中的内置函数

使用Spark SQL中的内置函数对数据进行分析,Spark SQL API不同的是,DataFrame中的内置函数操作的结果是返回一个Column对象,而DataFrame天生就是"A distributed collection of data organized into named columns.",这就为数据的复杂分析建立了坚实的基础并提供了极大的方便性,例如说,我们在操作DataFr

麒麟 1万+

SpringBoot 集成sparksql,scala 操作hive

SpringBoot 集成sparksql,scala 操作hive 一、添加pom依赖 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.12</artifactId> <version>2.4.4</version> .

webCows的博客 2225

SparkSQL - 介绍及使用 Scala、Java、Python 三种语言演示

前面的文章中使用 进行数据的处理,优点是非常的灵活,但需要了解各个算子的场景,需要有一定的学习成本,而 语言是一个大家十分熟悉的语言,如果可以通过编写 而操作,学习的成本便会大大降低,在大数据领域 已经是数一个非常重要的范式,在 生态圈中,我们可以通过 进而转换成 进行数据分析,在后起之秀的 中也有 来简化数据的操作。 可以理解成是将 解析成: 再执行。的数据抽象是 和 ,底层都是。 可以理解为是一个分布式表,包括: 。 在 的基础上增加了泛型的概念。例如:有文本数据,读取为

小毕超博客 2672

SparkSQL与RDD

1.RDD是Spark的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据集2.RDD在抽象上来说是一种元素集合,包含了数据。它是被分区的,分为多个分区,每个分区分布3.在集群中的不同节点上(分区即partition),从而让RDD中的数据可以被并行操作。(分布式的特性)4.RDD通常通过Hadoop上的文件,即HDFS文件,来进行创建;有时也可以通过Spark应用程序中的集合来创建。

2401_83215220的博客 1174

Windows下使用hadoop+hive+sparkSQL

在windows下使用spark-sql的解决办法,包括windows下使用hdfs的解决办法

qq_41631913的博客 2597

(scala 版本不匹配的问题)java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V

一、问题 之前运行Spark core完全没问题,到Spark SQL就开始报错,看百度上说是scala和spark的版本对不上 。 提示错误如下: ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0) java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V Using Spark's default log4j profile: org/apache/spark

weixin_43520450的博客 7846

SparkSQL读写kudu小记

在操作之前首先要有相应的依赖 &lt;dependency&gt; &lt;groupId&gt;org.apache.kudu&lt;/groupId&gt; &lt;artifactId&gt;kudu-spark2_2.11&lt;/artifactId&gt; &lt;version&gt;1.8.0&lt;/version&gt; &a

qq_34993631的博客 3774

sparkSQL入门和实践(scala)

spark sql 什么是spark sql? Spark SQL 是 Spark 用来处理结构化数据的一个模块,它提供了 2 个编程抽象:DataFrame 和 DataSet,并且作为分布式 SQL 查询引擎的作用 spark sql特点 Spark SQL 的特点 1)易整合 2)统一的数据访问方式 3)兼容 Hive 4)标准的数据连接 什么是 DataFrame 与 RDD 类似,DataFrame 也是一个分布式数据容器。然而 DataFrame 更像传统数据库的二维 表格,除了数据以外,还记录

every place is the center of the universe 1080
上一篇: SparkContext源码分析
下一篇: Spark SQL 开窗函数row_number的使用
JSON_ZJS
博客等级 码龄9年 30粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值