package com.grady

import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, Row, SparkSession} object HiveTableToTable { def main(args: Array[String]): Unit = {
val conf: SparkConf = new SparkConf().setAppName("StuToStu2")
val spark: SparkSession = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate() //tableToTable1(spark)
tableToTable2(spark)
} /**
* spark sql 方式
* @param spark
*/
def tableToTable1(spark: SparkSession): Unit = {
spark.sql("select * from jiang.student").show()
spark.sql("create table if not exists jiang.student_male like jiang.student;")
spark.sql("insert overwrite table jiang.student_male select * from jiang.student where sex = 'male'")
} /**
* 编程方式
* @param spark
*/
def tableToTable2(spark: SparkSession):Unit = {
spark.sql("create table if not exists jiang.student_female like jiang.student")
val dataFrame = spark.sql("select * from jiang.student")
val femaleDataSet = dataFrame.where("sex = 'female'")
// 有它和 case class Student 才能toDF,直接定义写成类文件不行
import spark.implicits._
val studentsDF = femaleDataSet.rdd.map( r =>
Student(r(0).toString.toInt, r(1).toString, r(2).toString, r(3).toString.toInt, r(4).toString)
).map(s => {
Student(s.id, s.name, s.sex, 18, "FemaleFt")
}).toDF()
studentsDF.write.mode("overwrite").insertInto("jiang.student_female") // 方法二
// val schema = SchemaType.getStudentSchema()
// 这里studentsRDD 需要转换成RDD[Row] 才可以使用
// val femaleStudentDF = spark.createDataFrame(studentsRDD, schema)
}
}
case class Student(id: Int, name: String, sex: String, age: Int, department: String)

执行:

spark-submit --master local[2] --num-executors 10 --class com.grady.HiveTableToTable /app/data/appdeploy/usehive1-1.0-SNAPSHOT.jar

日志:

hive> select * from student_female;
2 xiaochen female 18 FemaleFt
Time taken: 2.838 seconds, Fetched: 1 row(s)

spark 读取hive 计算后写入hive的更多相关文章

  1. c#读取文本文档实践4-读入到list泛型集合计算后写入新文档

    商品 数量 单价英语 66 100语文 66 80数学 66 100化学 66 40物理 66 60 上面截图是要处理的文本文档内容,目的是计算出总价并加在最后一列. 这一篇与上一篇比较类似,目的相同 ...

  2. 大数据学习day25------spark08-----1. 读取数据库的形式创建DataFrame 2. Parquet格式的数据源 3. Orc格式的数据源 4.spark_sql整合hive 5.在IDEA中编写spark程序(用来操作hive) 6. SQL风格和DSL风格以及RDD的形式计算连续登陆三天的用户

    1. 读取数据库的形式创建DataFrame DataFrameFromJDBC object DataFrameFromJDBC { def main(args: Array[String]): U ...

  3. spark读取mongodb数据写入hive表中

    一 环境: spark-: hive-; scala-; hadoop--cdh-; jdk-1.8; mongodb-2.4.10; 二.数据情况: MongoDB数据格式{    "_i ...

  4. Spark 读取HDFS csv文件并写入hive

    package com.grady import org.apache.spark.SparkConf import org.apache.spark.sql.{Row, SaveMode, Spar ...

  5. 解决Spark读取Hive分区表出现Input path does not exist的问题

    假设这里出错的表为test表. 现象 Hive读取正常,不会报错,Spark读取就会出现: org.apache.hadoop.mapred.InvalidInputException: Input ...

  6. [Spark][Hive][Python][SQL]Spark 读取Hive表的小例子

    [Spark][Hive][Python][SQL]Spark 读取Hive表的小例子$ cat customers.txt 1 Ali us 2 Bsb ca 3 Carls mx $ hive h ...

  7. spark 将dataframe数据写入Hive分区表

    从spark1.2 到spark1.3,spark SQL中的SchemaRDD变为了DataFrame,DataFrame相对于SchemaRDD有了较大改变,同时提供了更多好用且方便的API.Da ...

  8. 【原创】大叔经验分享(65)spark读取不到hive表

    spark 2.4.3 spark读取hive表,步骤: 1)hive-site.xml hive-site.xml放到$SPARK_HOME/conf下 2)enableHiveSupport Sp ...

  9. spark sql 查询hive表并写入到PG中

    import java.sql.DriverManager import java.util.Properties import com.zhaopin.tools.{DateUtils, TextU ...

随机推荐

  1. GitLab、Jenkins结合构建持续集成(CI)环境

    1 持续集成 概述及运行流程 1.1 持续集成概述 持续集成概述:持续集成(Continuous integration)持续集成是指开发者在代码的开发过程中,可以频繁的将代码部署集成到主干,并迚程自 ...

  2. label问题排查:打不开标注好的图像

    问题描述 之前标注好的文件,标注有bbox和若干points.选择Open Dir打开图像目录,选择Change Output Dir选择json文件所在目录.发现有些图片能正常显示标注后的状态.而有 ...

  3. windows下docker部署报错

    报错信息:Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:8848 -> 0.0.0 ...

  4. docker容器内修改文件

    1.找到容器对应的ID 使用docker ps命令找到对应的镜像id 2.根据容器id进入到对应文件夹 执行命令:docker exec -it 镜像id /bin/bash 3.进入对应目录(以My ...

  5. halcon 基础总结(一)裁切图片并旋转图像

    ​ 第一步当然是读取图像了:read_image (Image, 'C:/Users/HJ/Desktop/test_image/b.jpg') ​ 第二步:二值化.二值化.因为我这里的物体是黑色的, ...

  6. MySQL查询为什么没走索引?这篇文章带你全面解析

    工作中,经常遇到这样的问题,我明明在MySQL表上面加了索引,为什么执行SQL查询的时候却没有用到索引? 同一条SQL有时候查询用到了索引,有时候却没用到索引,这是咋回事? 原因可能是索引失效了,失效 ...

  7. 攻防世界MISC进阶区--39、40、47

    39.MISCall 得到无类型文件,010 Editor打开,文件头是BZH,该后缀为zip,打开,得到无类型文件,再改后缀为zip,得到一个git一个flag.txt 将git拖入kali中,在g ...

  8. 新版recon-ng安装模块

    表现:进入后报[*] No modules enabled/installed. 1.直接在recon-ng控制台输入marketplace install all,用来下载所有插件,如果不可以,往下 ...

  9. Solution -「ABC 217」题解

    D - Cutting Woods 记录每一个切割点,每次求前驱后驱就好了,注意简单判断一下开闭区间. 考场上采用的 FHQ_Treap 无脑莽. #include <cstdio> #i ...

  10. 启动docker报错Failed to listen on Docker Socket for the API.

    1.启动时报错查看日志发现 # journalctl -xe Failed to listen on Docker Socket for the API. 查找socket这个配置文件,修改如下 # ...