博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SparkSQLHive数据源实例
阅读量:6538 次
发布时间:2019-06-24

本文共 2349 字,大约阅读时间需要 7 分钟。

hot3.png

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

转载于:https://my.oschina.net/hehongbo/blog/1490493

你可能感兴趣的文章
UWP控件与DataBind
查看>>
bash: php: command not found
查看>>
XVIII Open Cup named after E.V. Pankratiev. Eastern Grand Prix
查看>>
数据恢复软件如何换机使用?
查看>>
《高性能mysql》到手
查看>>
(转)关于如何学好游戏3D引擎编程的一些经验
查看>>
使用Kotlin为你的APP自定义一个统一的标题栏
查看>>
EF各版本增删查改及执行Sql语句
查看>>
拓扑排序
查看>>
jQGrid API
查看>>
Bzoj1758: [Wc2010]重建计划
查看>>
redis集群部署及踩过的坑
查看>>
j2EE监听器-listener
查看>>
使用pip命令报You are using pip version 9.0.3, however version 18.0 is available pip版本过期.解决方案...
查看>>
(转)LINQ之路
查看>>
WCF 入门
查看>>
Django REST框架--关系和超链接api
查看>>
双击防止网页放大缩小HTML5
查看>>
C#的一些学习方法
查看>>
iOS开发-开发总结
查看>>