文档章节

SparkSQLHive数据源实例

别寒
 别寒
发布于 2017/07/27 16:05
字数 396
阅读 5
收藏 0
package cn.hhb.spark.sql;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.hive.HiveContext;

/**
 * Created by dell on 2017/7/27.
 */
public class HiveDataSource {
    public static void main(String[] args) {

        // 创建SparkConf
        SparkConf conf = new SparkConf()
                .setAppName("HiveDataSource").setMaster("local")
                .set("spark.testing.memory", "2147480000");

        // 创建javasparkContext
        JavaSparkContext sc = new JavaSparkContext(conf);
        // 创建HiveContext,注意,这里,接收的是sparkcontext作为参数,不是javasparkcontext
        HiveContext hiveContext = new HiveContext(sc.sc());

// 第一个功能:使用hivecontext的sql() hql()方法,可以执行hive中能够执行的hive语句
        // 判断是否存在student_infos表,如果存在则删除
        hiveContext.sql("DROP TABLE IF EXISTS student_infos");
        // 判断是否不存在student_infos表,如果不存在则创建
        hiveContext.sql("DROP TABLE IF NOT EXISTS student_infos (name STRING, age INT)");
        // 将学生基本信息数据导入student_infos表
        hiveContext.sql("LOAD DATA LOCAL INPATH '/user/local/student_infos.txt' INTO TABLE student_infos");

        // 用同样的方式给student_scores导入数据
        hiveContext.sql("DROP TABLE IF EXISTS student_scores");
        hiveContext.sql("DROP TABLE IF NOT EXISTS student_scores (name STRING, age INT)");
        // 将学生基本信息数据导入student_infos表
        hiveContext.sql("LOAD DATA LOCAL INPATH '/user/local/student_scores.txt' INTO TABLE student_scores");


 // 第二个功能,执行sql还可以返回dataframe,用于查询

        // 执行sql查询,关联两张表,查询成绩大于80分的学生
        DataFrame goodStudentsDF = hiveContext.sql("select si.name, si.age, ss.score from student_infos si join student_scores ss on si.name=ss.name where ss.score >=80");


// 第三个功能,可以将dataframe中的数据,理论上来说,dataframe对应的rdd的元素,是row即可将dataframe中的数据保存到hive表中

        // 将dataframe中的数据保存到good_student_infos表中
        hiveContext.sql("DROP TABLE IF EXISTS good_student_infos");
        goodStudentsDF.saveAsTable("good_student_infos");


// 第四个功能,可以用table()方法,针对hive表,直接创建dataframe

        // 然后针对good_student_infos表,直接创建dataframe
        Row[] goodStudentRows = hiveContext.table("good_student_infos").collect();
        for (Row goodStudentRow : goodStudentRowss){
            System.out.println(goodStudentRow);
        }

        sc.close();
    }
}

© 著作权归作者所有

共有 人打赏支持
别寒
粉丝 29
博文 271
码字总数 137605
作品 0
永州
程序员
私信 提问
jfinal-ext3最新版本来袭

介绍 jfinal-ext3,源自jfinal-ext,jfinal-ext2,基于jfinal3.x,扩展了很多特性。 使用 特性说明 配置说明 主要就是conf/jf-app-cfg.conf(以下简称”配置文件“)的配置说明 配置文件可以...

Jobsz
2018/07/18
0
0
Spring多数据源解决方案

在很多大型应用中都会对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性。而这样的方案就会不同于常见的单一数据实例的 方案,这就要程序在运行时根据当时...

taote
2012/10/17
0
0
jfinal-ext3 最新版本来袭:基于 JFinal 3.x

更新内容: 基于jfinal3.x; 扩展Model; 重新定义Generator的Teamplate; MappingKit文件在在应用启动时自动加载,不需要在手动MappingKit.mapping(arp); 升级conf/jf-app-cfg.conf配置; ...

Jobsz
2018/07/18
1K
2
网易云 MySQL实例迁移的技术实现

欢迎访问网易云社区,了解更多网易技术产品运营经验。 我们把数据库里部分或全部 Schema和数据迁移到另一个实例的行为称为实例迁移,将导出数据的实例称为源实例,导入数据的实例称为目标实例...

jessicaiu
2018/11/27
0
0
解密网易MySQL实例迁移高效完成背后的黑科技

作者:温正湖,网易杭研院资深工程师,负责网易云数据库平台核心开发和运维工作,对MySQL、MongoDB等数据库和Linux存储领域具有深入研究。 网易蜂巢团队:为企业提供专业容器云平台,深度整合...

温正湖
2016/09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

cnetos7+docker+rancher构建基于DevOps的全自动CI【01】

来自DevOps实践分享,分享从开发代码到生产环境部署的一条龙操作的实践及经验, 包含工具技术的选型及考量、私有代码库与私有镜像库的应用等。 1、环境选择 安装Rancher环境,一定要在干净的...

Elson
29分钟前
1
0
21分钟教会你分析MaxCompute账单

背景 阿里云大计算服务MaxCompute是一款商业化的大数据分析平台,其计算资源有预付费和后付费两种计费方式。并且产品每天按照project为维度进行计量计费(账单基本情况下会第二天6点前产出)...

zhaowei121
32分钟前
0
0
CTO职场解惑指南系列(一)

基于科技能够改变世界的事实,几乎每个公司的程序员都自带闪光灯。程序员的手和普通人的手自然是有区别的,“我们可是用双手改变了世界” 。(码农真的是靠双手吃饭,呵呵) 这个世界上但凡靠...

阿里云云栖社区
37分钟前
3
0
css实现图片自适应容器宽高

css实现图片自适应容器宽高的做法一般如下所示 <style>div{width: 200px; height: 200px}div img{width: 100%; height: 100%}</style><div><img src="xxxx.png" /></div> 当外层容......

小草先森
37分钟前
3
0
PlatON在CentOS上编译部署

本文作者为万向区块链CTO罗荣阁。 目录 PlatON在CentOS上编译部署 1. CentOS 环境准备 1.1. 使用rpm 安装devtoolset-7 1.2. 使用rpm 安装dos2unix 1.3. 准备PlatON代码 1.4. 确保build脚本正...

万向区块链
45分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部