spark-sql 备忘录

wordcount

bash 复制代码
sc.textFile("../data/data.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

读取json 文件 并通过sql 执行 join 查询

java 复制代码
public static void main(String[] args) {
        SparkSession session = SparkSession.builder().master("local")
                .appName("master").getOrCreate();
        Dataset<Row> df = session.read().json("./data/user2.json");
//        json.show();
        df.createOrReplaceTempView("user");

        Dataset<Row> df2 = session.read().json("./data/dept.json");
        df2.createOrReplaceTempView("dept");
        Dataset<Row> result = session.sql("select u.id,u.name,d.name dname from user u left join dept d" +
                " on u.deptno= d.id" +
                "");
//        result.show();
//        result.collectAsList().forEach(System.out::println);
       result.write().csv("data/result2");
       session.close();
    }

jdbc 导出csv

bash 复制代码
public static void main(String[] args) {
        SparkSession session = SparkSession.builder().master("local")
                .appName("master").getOrCreate();
        Properties connectionProperties = new Properties();
        connectionProperties.put("user", "root");
        connectionProperties.put("password", "root");
        Long start = System.currentTimeMillis();
        Dataset<Row> report = session.read().jdbc("jdbc:mysql://localhost:3306/test",
                "idms_user", connectionProperties).filter("createDate is not null");

        report.write().option("header", true).mode("overwrite").csv("data/idms_user");
        long end = System.currentTimeMillis();
        System.out.println("cost:" + (end - start)+"ms");
        session.close();
    }

jdbc 通过sql 查询 函数处理

java 复制代码
/*
 jdbc  通过sql 查询  函数处理
*/ 
public static void main(String[] args) {
        SparkSession session = SparkSession.builder().master("local")
                .appName("master").getOrCreate();
        Properties connectionProperties = new Properties();
        connectionProperties.put("user", "root");
        connectionProperties.put("password", "root");
        Long start = System.currentTimeMillis();
        Dataset<Row> report = session.read().jdbc("jdbc:mysql://localhost:3306/test",
                "report", connectionProperties);
        report.createOrReplaceTempView("report");

        Dataset<Row> result = session.
                sql("select id,date_format(created_at,'yyyy-MM-dd') createDate ,title " +
                        " , date_format(now(),'yyyy-MM-dd') nowDate" +
                        " ,datediff(now(),created_at) days"+
                        " from report where age>12");

        result.show();
        session.close();
    }
相关推荐
MDM.Plus1 小时前
苹果MDM技术演进:从远程控制到设备信任体系的构建
运维·服务器·安全·ios·mdm·手机店
写代码的学渣2 小时前
Linux systemd 开机启动日志逐行详细解析报告
linux·运维·服务器
NiceCloud喜云4 小时前
Anthropic 一周三连发:Cowork 多端、Fable 5 按需付费、J-space 论文的技术解读
java·服务器·网络·人工智能·ai
qeen874 小时前
【Linux】指令补充与shell的简单介绍
linux·运维·服务器
想你依然心痛4 小时前
内存安全语言在嵌入式中的对比:Rust vs Ada vs SPARK——形式化验证、运行时
安全·rust·spark
麦聪聊数据4 小时前
业务自助取数(下):安全可控前提下,实现取数效率百倍提升
数据库·sql
TTBIGDATA5 小时前
【Ambari Plus】13.Spark 安装
大数据·hadoop·分布式·spark·ambari·sqoop·ambari plus
ShiXZ2135 小时前
指令集-SQL 常用指令速查手册
数据库·sql·mysql·oracle
一拳一个娘娘腔5 小时前
【后渗透-Linux篇】Linux 提权与逃逸:从 www-data到 root的蜕变
linux·运维·服务器
Dlrb12116 小时前
信息查询Web服务器-->电子商城信息查询项目
linux·服务器·数据库·html·嵌入式·epoll·数据查询