spark version: 2.0.0
hive version: 2.0.1
I find insert overwrite statement running in spark-sql or spark-shell spends much more time than it does in hive-client (i start it in apache-hive-2.0.1-bin/bin/hive ), where spark costs about ten minutes but hive-client just costs less than 20 seconds.
These are the steps I took.
Test sql is :
INSERT overwrite TABLE login4game partition(pt='mix_en',dt='2016-10-21')
SELECT DISTINCT account_name,
role_id,
server,
'1476979200' AS recdate,
'mix' AS platform,
'mix' AS pid,
'mix' AS dev
FROM tbllog_login
WHERE pt='mix_en'
AND dt='2016-10-21' ;
there are 257128 lines of data in tbllog_login with partition(pt='mix_en',dt='2016-10-21')
ps:
I'm sure it must be "insert overwrite" costing a lot of time in spark, may be when doing overwrite, it need to spend a lot of time in io or in something else.
I also compare the executing time between insert overwrite statement and insert into statement.
1. insert overwrite statement and insert into statement in spark:
insert overwrite statement costs about 10 minutes
insert into statement costs about 30 seconds
2. insert into statement in spark and insert into statement in hive-client:
spark costs about 30 seconds
hive-client costs about 20 seconds
the difference is so little that we can ignore