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

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

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

说明都在代码中:

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;
    }

}

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

查看所有标签

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

The Lean Startup

The Lean Startup

Eric Ries / Crown Business / 2011-9-13 / USD 26.00

更多中文介绍:http://huing.com Most startups fail. But many of those failures are preventable. The Lean Startup is a new approach being adopted across the globe, chan ging the way companies are built and ......一起来看看 《The Lean Startup》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具