import java.sql.DriverManager
import java.util.Properties import com.zhaopin.tools.{DateUtils, TextUtils}
import org.apache.log4j.{Level, Logger}
import org.apache.spark.sql.SparkSession /**
* Created by xiaoyan on 2018/5/21.
*/
object IhrDownloadPg {
def main(args: Array[String]){
//设置spark日志级别
Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
System.setProperty("HADOOP_USER_NAME","hive")
val spark = SparkSession
.builder()
.master("local[*]")
.appName("hive ->> ihr_oper_download")
.config("spark.sql.warehouse.dir", "spark-warehouse")
.config("hive.metastore.uris", "thrift://master:9083")
.enableHiveSupport()
.getOrCreate()
import spark.sql val dt = if(!args.isEmpty) args(0) else "20180506"
val yesterday = DateUtils.dateAdd(dt, -1) val url = "jdbc:postgresql://192.168.9.222:5432/safe_base"
Class.forName("org.postgresql.Driver")
val conn = DriverManager.getConnection(url,"secu_man","secu_man")
val stmt = conn.createStatement()
stmt.execute("delete from ihr_oper_download where dt = '" + yesterday+"'") //查询RDD
val re1 = sql("select oper_date, " +
" acct_id, " +
" acct_name, " +
" module_name, " +
" oper_desc, " +
" ip, " +
" dt" +
" from safe.fact_ihr_oper_download t " +
" where t.dt > '20180320' and t.dt <"+yesterday+""); val connectionProperties = new Properties()
//增加数据库的用户名(user)密码(password),指定postgresql驱动(driver)
connectionProperties.put("user", "secu_man");
connectionProperties.put("password", "secu_man");
connectionProperties.put("driver", "org.postgresql.Driver");
re1.toDF().write.mode("append").jdbc(url, "ihr_oper_download", connectionProperties);
System.err.print("ihr_oper_download insert complete!! ");
}
}

  注意:如果PG表不存在,默认会自动创建一张表,且字段类型为text

spark sql 查询hive表并写入到PG中的更多相关文章

  1. 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器

    第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...

  2. spark2.3.0 配置spark sql 操作hive

    spark可以通过读取hive的元数据来兼容hive,读取hive的表数据,然后在spark引擎中进行sql统计分析,从而,通过spark sql与hive结合实现数据分析将成为一种最佳实践.配置步骤 ...

  3. Spark SQL with Hive

    前一篇文章是Spark SQL的入门篇Spark SQL初探,介绍了一些基础知识和API,可是离我们的日常使用还似乎差了一步之遥. 终结Shark的利用有2个: 1.和Spark程序的集成有诸多限制 ...

  4. SQL查询每个表的字段数量

    --SQL查询每个表的字段数量select b.[name], count(*) As AllCount,ISNULL(ISNULL(sum(case when isnullable=0 then 1 ...

  5. Hibernate原生SQL查询多表关联,SQL语句要注意的问题

    Hibernate原生SQL查询多表关联,SQL语句要注意的问题 @for&ever 2009-9-4 系统环境: MySQL5.1 Hibernate3.3 有如下的假定: 实体类 Ques ...

  6. SQL 查询横表变竖表

    SQL 查询横表变竖表   /*普通行列转换 假设有张学生成绩表(tb)如下:Name Subject Result张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 ...

  7. [数据库] SQL查询语句表行列转换及一行数据转换成两列

    原文来自:http://blog.csdn.net/Eastmount/article/details/50559008 本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两 ...

  8. SQL查询一个表中类别字段中Max()最大值对应的记录

      SQL查询一个表中类别字段中Max()最大值对应的记录 SELECT A.id, A.name, A.version FROM   DOC A, (SELECT id, MAX(version)  ...

  9. spark sql数据源--hive

    使用的是idea编辑器 spark sql从hive中读取数据的步骤:1.引入hive的jar包 2.将hive-site.xml放到resource下 3.spark sql声明对hive的支持 案 ...

随机推荐

  1. Java 循环队列

    传统数组实现的队列有缺陷,当多次入队出队后,队头指针会后移,当队尾指针达到数组末尾时,会提示队列已满,导致数组前部分空间被浪费.如果当队尾和队头指针到达数组末尾时能从数组[0]继续添加数据,可以提升数 ...

  2. isStatic:检测数据是不是除了symbol外的原始数据

    function isStatic(value) { return( typeof value === 'string' || typeof value === 'number' || typeof ...

  3. 测试工具Fiddler(二)—— 入门使用

    Fiddler设置与安装证书 一.Fiddler常见设置 Options位置:Tools->Options 二.移动端连上Fiddler作为代理 注意:因为Charles也是默认8888端口,小 ...

  4. MySQL查询基础

    MySQL查询 DQL(Data Query Language ) 1.排序查询 # 语法: select 字段 from 表名 order by 字段1 [降序/升序],字段2 [降序/升序],.. ...

  5. arima.predict()参数选择以及相关的一些问题

    在使用a ri ma进行模型建立时,需要注意以下几点 1.参数选择上predict必须起始时间在原始的数据及当中的,在下例中就是说2017必须在数据集里面,而2019不受限制,只哟在2017后面就好了 ...

  6. Djaingo 日志配置

    1.setting.py文件 # 项目级别的日志配置 BASE_LOG_DIR = os.path.join(BASE_DIR, "log") LOGGING = { 'versi ...

  7. JVM内存布局及GC知识

    一.JVM运行时内存布局 按java 8虚拟机规范的原始表达:(jvm)Run-Time Data Areas, 暂时翻译为"jvm运行时内存布局". 从概念上大致分为6个(逻辑) ...

  8. 【VBA】EXCEL通过VBA生成SQL,自动生成创建表结构SQL

    原文:https://blog.csdn.net/zutsoft/article/details/45441343 编程往往与数据库密不可分,一个项目往往有很多的表,很多时候通过excel来维护表结构 ...

  9. Java反射的常见用法

    反射的常见用法有三类,第一类是“查看”,比如输入某个类的属性方法等信息,第二类是“装载“,比如装载指定的类到内存里,第三类是“调用”,比如通过传入参数,调用指定的方法. 1 查看属性的修饰符.类型和名 ...

  10. Jmeter之BeanShell断言使用

    1.Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:用来记录日志文件,写入到j ...