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