根据官方文档的说法,要把hive-site.xml,core-site.xml,hdfs-site.xml拷贝到spark的conf目录下,保证mysql已经启动

java

 public class Demo {
private static SparkSession session = SparkSession.builder().appName("demo").enableHiveSupport()
.config("spark.sql.warehouse.dir", "/user/hive/warehouse").getOrCreate(); public static void main(String[] args) {
session.sql("drop table if exists students_info");
session.sql("create table if not exists students_info(name string,age int) "
+ "row format delimited fields terminated by '\t' \r\n"); // 将数据导入学生信息表
session.sql(
"load data local inpath '/opt/module/spark-test/data/student_infos.txt' into table default.students_info"); session.sql("drop table if exists students_score");
session.sql("create table if not exists students_score(name string,score int) \r\n"
+ "row format delimited fields terminated by '\t' \r\n"); // 将数据导入学生成绩表
session.sql(
"load data local inpath '/opt/module/spark-test/data/student_scores.txt' into table default.students_score"); // 查询
Dataset<Row> dataset = session.sql(
"select s1.name,s1.age,s2.score from students_info s1 join students_score s2 on s1.name=s2.name where s2.score>80"); // 将dataset中的数据保存到hive中
session.sql("drop table if exists students_result");
dataset.write().saveAsTable("students_result"); // 将hive中的表转成dataset,查看数据是否成功保存
Dataset<Row> table = session.table("students_result");
table.show(); session.stop(); }
}

scala

 object Demo {
def main(args: Array[String]): Unit = {
val session = SparkSession.builder().appName("demo").enableHiveSupport().config("spark.sql.warehouse.dir", "/user/hive/warehouse").getOrCreate() session.sql("drop table if exists students_info")
session.sql("create table if not exists students_info(name string,age int) \r\n row format delimited fields terminated by '\t'") session.sql("load data local inpath '/opt/module/spark-test/data/student_infos.txt' into table default.students_info") session.sql("drop table if exists students_score")
session.sql("create table if not exists students_score(name string,score int) \r\n row format delimited fields terminated by '\t'") session.sql("load data local inpath '/opt/module/spark-test/data/student_scores.txt' into table default.students_score") //保存到hive中
session.sql("drop table if exists students_result")
session.sql("select s1.name,s1.age,s2.score from students_info s1 join students_score s2 on s1.name=s2.name where s2.score >90").write.saveAsTable("students_result") //检查数据是否保存
val df = session.table("students_result")
df.show() session.stop()
}
}

sparksql hive作为数据源的更多相关文章

  1. SparkSQL读写外部数据源--数据分区

    import com.twq.dataset.Utils._ import org.apache.spark.sql.{SaveMode, SparkSession} object FileParti ...

  2. SparkSQL读写外部数据源-基本操作load和save

    数据源-基本操作load和save object BasicTest { def main(args: Array[String]): Unit = { val spark = SparkSessio ...

  3. SparkSQL读写外部数据源-jext文件和table数据源的读写

    object ParquetFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() ...

  4. SparkSQL读写外部数据源-通过jdbc读写mysql数据库

    object JdbcDatasourceTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builde ...

  5. SparkSQL读写外部数据源--csv文件的读写

    object CSVFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .ap ...

  6. SparkSQL读写外部数据源-json文件的读写

    object JsonFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .m ...

  7. 报表使用hive数据源报java.net.SocketTimeoutException: Read timed out

    数据库表的数据量大概50W左右,在报表设计器下创建了hive的数据源,连接正常,由于数据量比较大,就用了润乾报表的大数据报表功能,报表设置好后,发布到页面中报错: 数据集ds1中,SQL语句SELEC ...

  8. Sparksql 取代 Hive?

    sparksql  hive https://databricks.com/blog/2014/07/01/shark-spark-sql-hive-on-spark-and-the-future-o ...

  9. SparkSQL程序设计

    1.创建Spark Session val spark = SparkSession.builder . master("local") .appName("spark ...

随机推荐

  1. Cronolog 分割 Tomcat8 Catalina.out日志 (转)

    默认情况下,tomcat的catalina.out日志文件是没有像其它日志一样,按日期进行分割,而是全部输出全部写入到一个catalina.out,这样日积月累就会造成.out日志越来越大,给管理造成 ...

  2. JS错误记录 - 事件 - 拖拽

    错误总结: 1. var disX = 0;   现在window.onload里声明变量,而不是在事件oDiv.onmousedown里面声明并赋值. 对于这个还不是很明白. 2. onmoused ...

  3. POJ 3264 Balanced Lineup 线段树RMQ

    http://poj.org/problem?id=3264 题目大意: 给定N个数,还有Q个询问,求每个询问中给定的区间[a,b]中最大值和最小值之差. 思路: 依旧是线段树水题~ #include ...

  4. [Angular] Intercept HTTP requests in Angular

    Being able to intercept HTTP requests is crucial in a real world application. Whether it is for erro ...

  5. Android 自己定义主菜单

    本文介绍一个超简单的自己定义主菜单.效果例如以下: 原理:事实上就是对原生的Dialog的一个简单的封装.并加上显示和隐藏的动画效果.再给控件加上回调事件. TestDialog.java publi ...

  6. 浅谈求lca

    lca即最近公共祖先,求最近公共祖先的方法大概有3种,其实是窝只听说过3种,这3种做法分别是倍增求lca,树剖求lca和tarjan求lca,但是窝只会前2种,所以这里只说前2种算法了. 首先是倍增求 ...

  7. shrio 权限管理filterChainDefinitions过滤器配置(转)

    shrio 权限管理filterChainDefinitions过滤器配置 /** * Shiro-1.2.2内置的FilterChain * @see ======================= ...

  8. hdu 3306 Another kind of Fibonacci(矩阵高速幂)

    Another kind of Fibonacci                                                        Time Limit: 3000/10 ...

  9. 经验总结56--mybatis返回主键

    使用mybatis框架时,有时候须要新插入的数据的主键是多少. 1.oracle 因为oracle是建的序列文件,获取ID值. <insert id="insert" par ...

  10. 关于JavaScript对象概念的总结

    原文 https://www.jianshu.com/p/88213b499c4b 大纲 前言 1.对象的相关概念 2.对象的创建(简单创建) 3.对象的属性 3.1.数据属性 3.2.访问器属性 4 ...