Spark2通过SparkSQL读写Hive数据的示例

栏目: 服务器 · 发布时间: 8年前

内容简介:说明都在代码中:

说明都在代码中:

import java.io.File;

import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

/**
 * ClassName:SparkReadWriteHiveTest <br/>
 * Date: 2018年8月15日 下午1:37:26 <br/>
 * 
 * @author fenglibin
 * @version
 * @see
 */
public class SparkReadWriteHiveTest {

    public static void main(String[] args) {
        /*
         * test_source_table结构如下,包括key和value两列,如下:
         * key,  value
         * k1,   123
         * k2,   234
         */
        String sql = "SELECT * FROM test_source_table_hive";
        // warehouseLocation 指定管理数据库和表的默认位置
        String warehouseLocation = new File("spark-warehouse").getAbsolutePath();
        SparkSession sparkSession = SparkSession.builder().appName("Java Spark Hive Example").config("spark.sql.warehouse.dir",
                                                                                                     warehouseLocation).enableHiveSupport().getOrCreate();
        // SQL查询的结果本身是DataFrames,支持所有正常的功能操作。
        Dataset<Row> sqlDF = sparkSession.sql(sql);

        // 将数据转换为RDD然后处理
        JavaRDD<Obj> resultRDD = sqlDF.javaRDD().map(row -> {
            Obj obj = new Obj();
            obj.setKey(row.getAs("key"));
            obj.setValue(Long.parseLong(row.getAs("value")) * 1000);
            return obj;
        });

        // 将RDD转换为Dataset
        Dataset<Row> tempResult = sparkSession.createDataFrame(resultRDD, Obj.class);
        // 将Dataset关联为临时视图test_desc_table_temp_hive,后续 SQL 操作中可使用
        tempResult.createOrReplaceTempView("test_desc_table_temp_hive");
        /*
         * test_desc_table_hive结构如下,包括key和value两列,如下:
         * key,  value
         * k1,   123
         * k2,   234
         */
        //将计算结果写出到hive中的目标表:test_desc_table_hive
        sparkSession.sql("insert into default.test_desc_table_hive select * from test_desc_table_temp_hive");
        sparkSession.close();
    }
}
class Obj {
    private String key;
    private long   value;

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public long getValue() {
        return value;
    }

    public void setValue(long value) {
        this.value = value;
    }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Algorithms Unlocked

Algorithms Unlocked

Thomas H. Cormen / The MIT Press / 2013-3-1 / USD 25.00

Have you ever wondered how your GPS can find the fastest way to your destination, selecting one route from seemingly countless possibilities in mere seconds? How your credit card account number is pro......一起来看看 《Algorithms Unlocked》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具