If I understand what you're attempting to do, I think a snapshot will work. A snapshot is not a copy of the data and doesn't take much time. It's really just a copy of the region-> store files mapping at a point in time. It will prevent the store files from getting deleted so drop the snapshot once you're done with it. As long as there's no difference in the representation of the Phoenix data in hbase for dynamic column data vs explicit columns, you should be able to take the snapshot, drop the table, recreate it with the new definition, then restore the snapshot.
> On Feb 25, 2016, at 8:44 AM, Steve Terrell <[email protected]> wrote: > > I like your outside-the-box thinking. Unfortunately, my end goal was to > convert a table created with dynamic fields into a table or view with all > static fields so that I could avoid having to specify the data type of every > dynamic field in the SQL. And I wanted to avoid having to rewrite the data - > which is what I would have to do if I copied to a new table or do a > snapshot/restore. > > If I go forward, it looks like I'll probably need to just create a new table > with all fields made static, and then copy the data from one to the other. > > Thanks, > Steve > >> On Wed, Feb 24, 2016 at 7:11 PM, Jonathan Leech <[email protected]> wrote: >> You could also take a snapshot in hbase just prior to the drop table, then >> restore it afterward. >> >> >> >>> On Feb 24, 2016, at 12:25 PM, Steve Terrell <[email protected]> wrote: >>> >>> Thanks for your quick and accurate responses! >>> >>>> On Wed, Feb 24, 2016 at 1:18 PM, Ankit Singhal <[email protected]> >>>> wrote: >>>> Yes, data will be deleted during drop table command and currently there is >>>> no parameter to control that. You may raise a jira for this. >>>> >>>> A workaround you may try is by opening a connection at a timestamp a >>>> little greater than last modified timestamp of table and then run drop >>>> table command. but remember you may still loose some data inserted before >>>> that timestamp >>>> >>>> Regards, >>>> Ankit Singhal >>>> >>>>> On Wed, Feb 24, 2016 at 11:27 PM, Steve Terrell <[email protected]> >>>>> wrote: >>>>> Good idea! >>>>> >>>>> I was using SQuirreL Client, and I did put the hbase-site.xml in the same >>>>> directory as the driver jar. However, I did not know how to check to see >>>>> that the property was being found. >>>>> >>>>> So, I switched to using the sqlline query command line, and this time the >>>>> table remained in the hbase shell list after I dropped it in Phoenix. >>>>> So, when using sqlline I am sure that the property is being picked up. >>>>> I'll worry about SQuirreL another day. >>>>> >>>>> Now I have a new problem: Even though the table still exists in HBase, >>>>> the data that I had upserted into the table via Phoenix does not show up >>>>> when I scan it in hbase shell. Looks like the drop table in Phoenix also >>>>> deleted my rows in HBase. >>>>> >>>>> Is there a way to drop the Phoenix table without the rows in HBase being >>>>> deleted? >>>>> >>>>> Thank you, >>>>> Steve >>>>> >>>>> >>>>>> On Wed, Feb 24, 2016 at 11:42 AM, Ankit Singhal >>>>>> <[email protected]> wrote: >>>>>> Hi Steve, >>>>>> >>>>>> can you check whether the properties are picked by the sql/application >>>>>> client. >>>>>> >>>>>> Regards, >>>>>> Ankit Singhal >>>>>> >>>>>>> On Wed, Feb 24, 2016 at 11:09 PM, Steve Terrell <[email protected]> >>>>>>> wrote: >>>>>>> HI, I hope someone can tell me what I'm doing wrong… >>>>>>> >>>>>>> I set phoenix.schema.dropMetaData to false in hbase-site.xml on both >>>>>>> the client and server side. >>>>>>> >>>>>>> I restarted the HBase master service. >>>>>>> >>>>>>> I used Phoenix to create a table and upsert some values. >>>>>>> >>>>>>> I used Phoenix to drop the table. >>>>>>> >>>>>>> I expected the table to still exist when I went into hbase shell and >>>>>>> did a list, but the table apparently was dropped from HBase as well. >>>>>>> >>>>>>> Did I miss something? >>>>>>> >>>>>>> Thank you, >>>>>>> Steve >
