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();
    }
相关推荐
vvw&18 小时前
如何使用 Nodemon 自动重启 Node.js 应用
linux·运维·服务器·node.js
Elendill18 小时前
【Ubuntu】Ubuntu 服务器升级系统操作记录
运维·服务器·ubuntu
北亚数据恢复18 小时前
服务器数据恢复—Raid5阵列热备盘同步失败,数据恢复揭秘
运维·服务器
利刃大大18 小时前
【高并发服务器:HTTP应用】十五、HttpRequest请求模块 && HttpResponse响应模块设计
服务器·c++·http·项目
Matana11119 小时前
Vmware中主机ip a没有ip地址
服务器·网络·tcp/ip
征尘bjajmd19 小时前
Java使用okhttp发送get、post请求
java·服务器·数据库
kpli9020 小时前
OceanBase数据库SQL调优
数据库·sql·oceanbase
数字化顾问20 小时前
(114页PPT)华为FusionCloud私有云最佳实践RegionTypeII(附下载方式)
运维·服务器·华为
2501_9388101120 小时前
共享IP的定义
服务器·网络·tcp/ip
Koma-forever20 小时前
Oracle SQL Developer设置打开表的时候如何是新窗口中打开
数据库·sql·oracle