You're right! I initially suspected the tool, but have found the table definition is different depending on whether you execute the SHOW CREATE TABLE statement in Hive or Impala. Hive specifies the inputformat/outputformat, and Impala just returns STORED AS PARQUET.
As for the error, I should have mentioned that the table I was inserting into was partitioned. I ran this using Hive when I was getting the error:
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstrict;
SET hive.exec.max.dynamic.partitions=2000;
SET hive.exec.max.dynamic.partitions.pernode=1000;
INSERT INTO TABLE bherman.transaction_association PARTITION(p_merchantid, store_month_of_year)
SELECT
pta.merchant_id,
pta.store_id,
....