How to manage the Hue database with the shell

How to manage the Hue database with the shell

Last update on March 9 2016


First, backup the database. By default this is this SqlLite file:

cp /var/lib/hue/desktop.db ~/

Then if using CM, export this variable in order to point to the correct database:


Where <id> is the most recent ID in that process directory for hue-HUE_SERVER.

A quick way to get the correct directory is to use this script:

export HUE_CONF_DIR="/var/run/cloudera-scm-agent/process/`ls -alrt /var/run/cloudera-scm-agent/process | grep HUE | tail -1 | awk '{print $9}'`"

Then go in the Database. From the Hue root (/use/lib/hue by default):

[email protected]:hue# build/env/bin/hue dbshell

You might hit some permissions error about the logs:

build/env/bin/hue dbshell
Traceback (most recent call last):
  File "/opt/cloudera/parcels/CDH-5.1.0-1.cdh5.1.0.p0.53/lib/hue/build/env/bin/hue", line 9, in <module>
    load_entry_point('desktop==3.6.0', 'console_scripts', 'hue')()
  File "/opt/cloudera/parcels/CDH-5.1.0-1.cdh5.1.0.p0.53/lib/hue/desktop/core/src/desktop/", line 41, in entry
    from desktop import settings, appmanager
  File "/opt/cloudera/parcels/CDH-5.1.0-1.cdh5.1.0.p0.53/lib/hue/desktop/core/src/desktop/", line 55, in <module>
  File "/opt/cloudera/parcels/CDH-5.1.0-1.cdh5.1.0.p0.53/lib/hue/desktop/core/src/desktop/log/", line 146, in basic_logging
  File "/usr/lib/python2.7/logging/", line 78, in fileConfig
    handlers = _install_handlers(cp, formatters)
  File "/usr/lib/python2.7/logging/", line 156, in _install_handlers
    h = klass(*args)
  File "/usr/lib/python2.7/logging/", line 118, in __init__
    BaseRotatingHandler.__init__(self, filename, mode, encoding, delay)
  File "/usr/lib/python2.7/logging/", line 65, in __init__
    logging.FileHandler.__init__(self, filename, mode, encoding, delay)
  File "/usr/lib/python2.7/logging/", line 897, in __init__
    StreamHandler.__init__(self, self._open())
  File "/usr/lib/python2.7/logging/", line 916, in _open
    stream = open(self.baseFilename, self.mode)
IOError: [Errno 13] Permission denied: '/tmp/logs/dbshell.log'

A “workaround” is to run the command as root:

sudo HUE_CONF_DIR=/var/run/cloudera-scm-agent/process/9679-hue-HUE_SERVER /opt/cloudera/parcels/CDH-5.1.0-1.cdh5.1.0.p0.53/lib/hue/build/env/bin/hue dbshell

And you can start typing SQL queries:

sqlite> .tables
auth_group                         oozie_dataset
auth_group_permissions             oozie_decision
auth_permission                    oozie_decisionend
auth_user                          oozie_distcp
auth_user_groups                   oozie_email
auth_user_user_permissions         oozie_end
beeswax_metainstall                oozie_fork
beeswax_queryhistory               oozie_fs
beeswax_savedquery                 oozie_generic
beeswax_session                    oozie_history
desktop_document                   oozie_hive
desktop_document_tags              oozie_java
desktop_documentpermission         oozie_job
desktop_documentpermission_groups  oozie_join
desktop_documentpermission_users   oozie_kill
desktop_documenttag                oozie_link
desktop_settings                   oozie_mapreduce
desktop_userpreferences            oozie_node
django_admin_log                   oozie_pig
django_content_type                oozie_shell
django_openid_auth_association     oozie_sqoop
django_openid_auth_nonce           oozie_ssh
django_openid_auth_useropenid      oozie_start
django_session                     oozie_streaming
django_site                        oozie_subworkflow
jobsub_checkforsetup               oozie_workflow
jobsub_jobdesign                   pig_document
jobsub_jobhistory                  pig_pigscript
jobsub_oozieaction                 search_collection
jobsub_ooziedesign                 search_facet
jobsub_ooziejavaaction             search_result
jobsub_ooziemapreduceaction        search_sorting
jobsub_ooziestreamingaction        south_migrationhistory
oozie_bundle                       useradmin_grouppermission
oozie_bundledcoordinator           useradmin_huepermission
oozie_coordinator                  useradmin_ldapgroup
oozie_datainput                    useradmin_userprofile

Or migrating the database manually:

build/env/bin/hue syncdb
build/env/bin/hue migrate

If you want to switch to another database (we recommend MySql), this guide details the migration process.

The database settings in Hue are located in the hue.ini.

Note, you also query the database by pointing the DB Query App to the Hue database.

In developer mode (runserver command), you can also access the /admin page for using the Django Admin.


Transfer Oozie workflows belonging to the user Bob to Joe.

until Hue 3.8

# First move the objects
from oozie.models import Job
from django.contrib.auth.models import User

u1 = User.objects.get(username='bob')
u2 = User.objects.get(username='joe')

> [<Job: MyWf - bob>]

> 1

> []

> [<Job: MyWf - joe>]

wfs = Job.objects.filter(owner=u2)

For Hue 3.9+

# First move the objects
from desktop.models import Document2
from django.contrib.auth.models import User

u1 = User.objects.get(username='bob')
u2 = User.objects.get(username='joe')

Document2.objects.filter(owner=u1, type='oozie-workflow2')
> [<Document2: MyWf - bob>]

Document2.objects.filter(owner=u1, type='oozie-workflow2').update(owner=u2)
> 1

Document2.objects.filter(owner=u1, type='oozie-workflow2')
> []

Document2.objects.filter(owner=u2, type='oozie-workflow2')
> [<Document2: MyWf - joe>]

wfs = Document2.objects.filter(owner=u2, type='oozie-workflow2')

For both

# The list of ALL the workflows (will also list the already known ones) of the second user

# Then move the documents
from desktop.models import Document

> [<Document: workflow MyWf bob>]

> [<Document: workflow MyWf bob>]

> [<Document: workflow MyWf joe>]

Note: it will change again in Hue 3.10 and be easier.