SparkSql简单案例【Dataset,读取数据、创建表、查询数据】

2023-05-16

beer_reviews.csv

package bigdata.beer;

// 导入必要的库和类

import org.apache.spark.SparkConf;
import org.apache.spark.SparkContext;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

public class ProcessData001 {
    public static void main(String[] args) {
        SparkConf sparConf = new SparkConf().setMaster("local[*]").setAppName("Analysis");
        JavaSparkContext sc = new JavaSparkContext(sparConf);

        // 创建SparkSession对象
        SparkSession spark = SparkSession.builder().config(sparConf).appName("处理数据").getOrCreate();

        // 读取数据
        Dataset<Row> data = spark.read().option("header", true).option("inferSchema", true).csv("datas/beer_reviews.csv");

        // 创建表
        data.createOrReplaceTempView("beer_reviews");

        // 查询数据(环境简单测试)
        Dataset<Row> result001 = spark.sql("SELECT beer_style, AVG(review_overall) AS avg_overall FROM beer_reviews GROUP BY beer_style ORDER BY avg_overall DESC");

        // 显示结果(正常查询,环境无误!)
        // result001.show();// 显示结果


        /**
         * 按照review_overall进行降序排序。
         *
         */
        Dataset<Row> result002 = spark.sql("SELECT * FROM beer_reviews ORDER BY review_overall DESC");
        // result002.show();// 显示结果


        /**
         * 以下是按照"review_overall"进行降序排序,并根据"review_profilename"的字段值是否为空的Spark SQL语句。
         *
         * 在上述语句中,我们首先按照"review_overall"字段进行降序排序。然后,我们使用CASE语句根据"review_profilename"是否为空来进一步排序,如果为空则排在后面,否则按照"review_profilename"进行降序排序。
         */
        Dataset<Row> result003 = spark.sql("SELECT *\n" +
                "FROM beer_reviews\n" +
                "ORDER BY review_overall DESC, CASE WHEN review_profilename IS NULL THEN 1 ELSE 0 END, review_profilename DESC\n");//按照beer_reviews降序排序
        // result003.show();// 显示结果

        /**
         * 以下是按照"review_aroma"进行降序排序,并根据"review_profilename"的字段值是否为空的Spark SQL语句。
         *
         * 在上述语句中,我们首先按照"review_aroma"字段进行降序排序。然后,我们使用CASE语句根据"review_profilename"是否为空来进一步排序,如果为空则排在后面,否则按照"review_profilename"进行降序排序。
         */
        Dataset<Row> result004 = spark.sql("SELECT *\n" +
                "FROM beer_reviews\n" +
                "ORDER BY review_aroma DESC, CASE WHEN review_profilename IS NULL THEN 1 ELSE 0 END, review_profilename DESC\n");
        // result004.show();

        /**
         * 以下是按照"review_appearance"进行降序排序,并根据"review_profilename"的字段值是否为空的Spark SQL语句。
         *
         * 在上述语句中,我们首先按照"review_appearance"字段进行降序排序。然后,我们使用CASE语句根据"review_profilename"是否为空来进一步排序,如果为空则排在后面,否则按照"review_profilename"进行降序排序。
         */
        Dataset<Row> result005 = spark.sql("SELECT *\n" +
                "FROM beer_reviews\n" +
                "ORDER BY review_appearance DESC, CASE WHEN review_profilename IS NULL THEN 1 ELSE 0 END, review_profilename DESC\n");
        result005.show();

        /**
         * 以下是按照"review_palate"进行降序排序,并根据"review_profilename"的字段值是否为空的Spark SQL语句。
         *
         *
         *
         *
         */
        Dataset<Row> result006 = spark.sql("SELECT *\n" +
                "FROM beer_reviews\n" +
                "ORDER BY review_palate DESC, CASE WHEN review_profilename IS NULL THEN 1 ELSE 0 END, review_profilename DESC\n");
        // result006.show();


        /**
         * 以下是按照"review_taste"进行降序排序,并根据"review_taste"的字段值是否为空的Spark SQL语句。
         *
         *
         *
         *
         */
        Dataset<Row> result007 = spark.sql("SELECT *\n" +
                "FROM beer_reviews\n" +
                "ORDER BY review_taste DESC, CASE WHEN review_profilename IS NULL THEN 1 ELSE 0 END, review_profilename DESC\n");
        // result007.show();


        /**
         * 以下是按照"beer_abv"进行降序排序,并根据"review_taste"的字段值是否为空的Spark SQL语句。
         *
         *
         *
         *
         */
        Dataset<Row> result008 = spark.sql("SELECT *\n" +
                "FROM beer_reviews\n" +
                "ORDER BY beer_abv DESC, CASE WHEN review_profilename IS NULL THEN 1 ELSE 0 END, review_profilename DESC\n");
        result008.show();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SparkSql简单案例【Dataset,读取数据、创建表、查询数据】 的相关文章

  • 嵌入式笔试(1)—海康威视试题

    单选 xff08 15题 xff09 第一题 栈简介 栈由操作系统 xff08 编译器 xff09 自动分配释放 xff0c 用于存放函数的参数值 局部变量等 xff0c 其操作方式类似于数据结构中的栈 堆简介 堆由开发人员分配和释放 xf
  • 常用通信协议——IIC详解(全网最全)

    一 IIC 简介 I2C xff08 Inter Integrated Circuit xff09 是内部整合电路的称呼 xff0c 是一种串行通讯总线 xff0c 使用多主从架构 xff0c 由飞利浦公司在1980年为了让主板 嵌入式系统
  • 常用通信协议——IIC协议编程实现

    一 IIC连接实物示意图 二 IIC协议程序编写的要点 xff1a 1 空闲状态 2 开始信号 3 停止信号 4 应答信号 5 数据的有效位 6 数据传输 三 IIC驱动编写 1 硬件准备 此处使用正点原子Mini板STM32F103 xf
  • Linux驱动编程篇(四)——LED驱动(二)LED驱动框架

    为应对多种芯片或开发板适配的LED驱动程序 xff0c 同时减少开发流程 xff0c 故需要在APP 驱动程序 硬件三个部分中添加一个部分 xff0c 用于放置各单板LED驱动程序的公共部分 一 LED驱动程序框架的流程图 二 对于公共部分
  • Linux驱动编程篇(五)——驱动设计的思想(面向对象)(分层)(分离)

    Liunx驱动 61 驱动框架 43 硬件操作 61 61 61 Liunx驱动 61 驱动框架 43 单片机 对于驱动的的框架 xff0c 大体有三种设计思想 xff1a 1 面向对象 xff1b 2 分层 xff1b 3 分离 xff0
  • 嵌入式Android底层开发(一)——安卓开发的整体框架与简述

    一 Android简介 Android是一种基于Linux内核 xff08 不包含GUN组件 xff09 的自由及开放源代码的操作系统 xff0c 主要使用于移动设备 xff0c 如智能手机和平板电脑 xff0c 由美国Google公司和开
  • 旋转矩阵

    关注下方公众号 xff0c 分享硬核知识 作者 小K 出品 公众号 xff1a 小K算法 xff08 ID xff1a xiaok365 xff09 01 故事起源 有这样的一种矩阵 xff0c 从左上角开始 xff0c 顺时针从外向里旋转
  • 【转】 linux port scan

    https www binarytides com tcp syn portscan in c with linux sockets Port Scanning searches for open ports on a remote sys
  • 嵌入式Android音频系统(一)Android音频系统专栏开篇

    对于安卓音频系统 xff0c 在前面我们已经讲了大致框架 xff0c 嵌入式Android底层开发 xff08 六 xff09 Android音频系统 总体框架 本专栏将对Android音频系统进行更细致的阐述 xff0c 同时这些也是我的
  • 嵌入式Android音频系统(二)Android音频系统的专用名词解释

    对于Android音频系统学习时可能会出现许多名词 xff0c 这些词光看字面意思可能无法直接理解 xff0c 为了更好的对Android系统进行学习 xff0c 特开一章对Android音频系统会出现的名词进行解释 xff0c 欢迎大家补
  • 嵌入式Android音频系统(三)Android音频系统涉及的文件

    本专栏将对Android音频系统进行更细致的阐述 xff0c 同时这些也是我的学习笔记 xff0c 如有错误欢迎大家在评论区批评指正 xff0c 谢谢大家 本专栏的学习资料来源 xff1a 本专栏的学习资料主要来自韦东山老师的Android
  • 使用ros从realsence相机中获取图像

    第一部分 从相机中提取出视频并拆分成帧 文章目录 第一部分 从相机中提取出视频并拆分成帧前言一 使用ros从realsence相机中获取录制的视频并播放1 开启ros内核2 打开realsense相机3 查看当前话题4 在相机界面显示RGB
  • ROS进行深度相机的标定

    前言 自己使用标定板对深度相机进行标定 参考 xff1a http wiki ros org camera calibration Tutorials MonocularCalibration 一 准备标定板 在下面的网站中可下载棋盘格标定
  • Realsense SDK安装以及ROS版安装

    一 Realsense SDK2 安装 1 注册服务器公钥 sudo apt get update amp amp sudo apt get upgrade amp amp sudo apt get dist upgrade sudo ap
  • STM32学习笔记(四)蜂鸣器实验

    STM32F103ZET6之蜂鸣器实验 文章目录 STM32F103ZET6之蜂鸣器实验前言一 原理图二 程序源码1 beep h2 beep c3 main c 三 实验结果总结 前言 对于STM32的学习可分为3个版本 1 寄存器版本
  • STM32学习笔记(五)按键输入实验

    STM32F103ZET6之按键输入实验 文章目录 STM32F103ZET6之按键输入实验前言一 原理图二 程序源码1 key h2 key c3 main c 三 实验结果总结 前言 对于STM32的学习可分为3个版本 1 寄存器版本
  • linux虚拟机无法关闭防火墙

    新手在操作虚拟机时经常会出现各种奇怪的bug 例如宿主机无法访问虚拟机里的tomcat Docker registry nginx等问题 往往是因为没关闭防火墙 I service iptables stop xff08 特点是 xff1a
  • stm32串口收发总结

    stm32串口的使用过程 xff1a 1 使能串口时钟 xff0c 同时使能串口对应的GPIO的时钟 xff1b 2 设置串口引脚的输入输出模式 速率 xff0c 并初始化GPIO引脚 xff1b 3 对于需要接收数据的串口 xff0c 配
  • 1、树莓派3B+ 开箱安装系统及入门使用的基本设置

    一直想学习Linux的开发 xff0c 补充高端应用的开发的短板 xff0c 苦于没有时间 xff0c 最近有点时间购买了当前最火的卡片计算机 xff0c 树莓派3B plus版本 xff0c 淘宝购买 xff0c 同城发货 xff0c 拿
  • 【晕晕晕】对softmax函数进行改进

    改进softmax函数 span class token keyword def span span class token function softmax1 span span class token punctuation span

随机推荐