hive日常总结

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

你可能感兴趣的:(hive日常总结)