hive日常总结

2017-04-21  本文已影响7人  时待吾

spark sql 读取mysql 数据库和写入mysql数据库时,

dataframe 字段比表字段多一个 直接写入会报错;

将表添加一个字段后 让DataFrame 与表的字段形式统一后,则可以统一插入;

dataframe 字段比表字段少一个 其余的一样 仍然可以写入成功。

udf函数写的时候 首先注册  即便传参为空 注册的时候仍然使用 _  使用的时候依据参数进行传参,如果没有参数,仍然使用()

def getNowStr():String = {

val sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

sf.format(System.currentTimeMillis())

}

val nowStr = udf(DateTimeUtil.getNowStr _)

df.withColumn("receivetime",nowStr())

secure CRT  

x shell

createtableselect 会将原表中的数据完整复制一份,但表结构中的索引会丢失。

createtablelike只会完整复制原表的建表语句,但不会复制数据

create table if not exists t1 like t2

insert into t2(a,b) select a,b from t1 where t1.recordtime > '2017-04-12 00:00:00' 表存在

create table t2 as select * from t1 where t1.recordtime > '2017-04-12 00:00:00'

select * into t2 from  t1 where t1.recordtime > '2017-04-12 00:00:00' 表不存在

delete t1 from t1,t2 where t1.recordtime > t2.recordtime

delete t1 from t1,(select min(recordtime) as minrt from t1) t2 where t1.recordtime >= t2.minrt

and t1.recordtime <= TIMESTAMPADD(day,-7,CURRENT_DATE())

TIMESTAMP(REPLACE(recordtime,"/","-"))

rename tab1 to tb2

上一篇 下一篇

猜你喜欢

热点阅读