If a table is not partitioned and then you want to partition the table on the data already written but data is not in partition format, that is not doable.
Best approach would be, create a new table definition with the partition columns you want. turn on the dynamic partitioning system before you load data into new table set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict; insert overwrite table partitioned(columns) select * from oldtable remove old table PS: wait for others to add more suggestions. I may be very well wrong in suggesting this On Mon, Jun 10, 2013 at 7:01 PM, Peter Marron < peter.mar...@trilliumsoftware.com> wrote: > Hi,**** > > ** ** > > Using hive 0.10.0 over hadoop 1.0.4**** > > ** ** > > I have a (non-partitioned) table with loads of columns.**** > > I would like to create a partitioned table with the same set of columns.** > ** > > So the approach that I have been taking is to use “CREATE TABLE copy LIKE > original;”**** > > then I can use ALTER TABLE to change the location and the INPUTFORMAT**** > > and the OUTPUTFORMAT and the SERDE and properties and pretty much**** > > everything else. However I don’t seem to be able to make it partitioned.** > ** > > Sure I can add partitions if it’s already partitioned but I don’t seem**** > > to be able to make it partitioned if it’s not already. I get errors like > this:**** > > ** ** > > hive> ALTER TABLE customerShortValues ADD PARTITION (aid='1') LOCATION > 'E7/phase2/values/aid=1';**** > > FAILED: Error in metadata: table is not partitioned but partition spec > exists: {aid=1}**** > > FAILED: Execution Error, return code 1 from > org.apache.hadoop.hive.ql.exec.DDLTask**** > > ** ** > > So, I guess that I could create the table I want by hand copying over all > the**** > > column definitions. But is there an easier way?**** > > ** ** > > Z**** > -- Nitin Pawar