Java Spark-Hive 集成开发数据读取。

下面是Java Spark结合Hive开发的案例详解:


package com.spark.sql;

import org.apache.spark.SparkConf;
import org.apache.spark.rdd.RDD;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import scala.Function1;
import scala.runtime.BoxedUnit;

public class SparkSQL_Hive_java {
    public static void main(String[] args) {

        /**
         * 第一步:创建Spark SQL的功能入口:SparkSession
         */
        // 方式一:通过SparkSession直接创建
        /*SparkSession spark = SparkSession
                .builder()
                .appName("Spark_Hive")
                .master("local[2]")
                .enableHiveSupport()
                .getOrCreate();*/

        // 方式二:先创建SparkConf,再由SparkConf创建SparkSession
        SparkConf conf = new SparkConf()
                .setAppName("Spark_Hive")
                .setMaster("local[2]");

        SparkSession spark = SparkSession
                .builder()
                .config(conf)
                .enableHiveSupport()
                .getOrCreate();


        /**
         * 第二步,读取外部数据构建dataframe或dataset
         */

        Dataset<Row> emp = spark.sql("select * from company.emp");
        emp.createOrReplaceTempView("emp");

        Dataset<Row> dept = spark.table("company.dept");
        dept.createOrReplaceTempView("dept");

        /**
         * 第三步,使用transforamtion的dataset/dataframe api或者是写SQL进行开发
         */


        // 第一种方式:基于临时视图写SQL的方式,SQL返回结果也是DataFrame

        Dataset<Row> res = spark.sql("select empno,ename,job,sal," +
                "dname FROM emp JOIN dept ON emp.deptno = dept.deptno");

        // 第二种方式:使用DSL语句,倾向于RDD的使用方式,就是将sql的关键字封装成函数(算子)
        Dataset<Row> res1 = emp.select("empno", "ename", "sal", "comm")
                .where("sal > 2000");

        RDD<Row> rdd1 = res.rdd();
        RDD<Row> rdd2 = res1.rdd();
        /**
         * 第四步、输出或者打印
         */
//        res.show();
//        res1.show();
        
    }
}

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java