Created on 06-21-2016 01:12 AM - edited 09-16-2022 01:35 AM
Goals
NOTES
Connecting to the Guest Sandbox Machine
Depending upon the setup i.e., VirtualBox or VMWare Fusion for HAWQ & HDP, you can choose the connection method. For connecting via VMWare Fusion, you need to be aware of the IP address allocated to your virtual box.
Connecting via VMWare Fusion
HW13382:ODBC srai$ ssh root@172.16.105.137 -p 22 root@172.16.105.137's password: Last login: Mon Jun 20 15:31:20 2016 from 172.16.105.1 [root@sandbox ~]#
Connecting via Virtualbox
HW13382:ODBC srai$ ssh root@localhost -p 2222 root@172.16.105.137's password: Last login: Mon Jun 20 15:31:29 2016 from 172.16.105.1 [root@sandbox ~]#
NOTE: HAWQ has a preconfigured user account associated with it, similar to hive, known as "gpadmin". This by default is the superuser for the cluster and has all the privileges. For our exercise, we will be using this account.
[root@sandbox ~]# su - gpadmin [gpadmin@sandbox ~]$
[gpadmin@sandbox ~]$ env | egrep GPHOME GPHOME=/usr/local/hawq/. [gpadmin@sandbox ~]$ which psql /usr/local/hawq/bin/psql [gpadmin@sandbox ~]$
This is psql 8.2.15, the PostgreSQL interactive terminal (Greenplum version). Usage: psql [OPTION]... [DBNAME [USERNAME]] General options: -c, --command=COMMAND run only single command (SQL or internal) and exit -d, --dbname=DBNAME database name to connect to (default: "gpadmin") -f, --file=FILENAME execute commands from file, then exit -l, --list list available databases, then exit -v, --set=, --variable=NAME=VALUE set psql variable NAME to VALUE -X, --no-psqlrc do not read startup file (~/.psqlrc) -1 ("one"), --single-transaction execute command file as a single transaction --help show this help, then exit --version output version information, then exit Input and output options: -a, --echo-all echo all input from script -e, --echo-queries echo commands sent to server -E, --echo-hidden display queries that internal commands generate -L, --log-file=FILENAME send session log to file -n, --no-readline disable enhanced command line editing (readline) -o, --output=FILENAME send query results to file (or |pipe) -q, --quiet run quietly (no messages, only query output) -s, --single-step single-step mode (confirm each query) -S, --single-line single-line mode (end of line terminates SQL command) Output format options: -A, --no-align unaligned table output mode -F, --field-separator=STRING set field separator (default: "|") -H, --html HTML table output mode -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \pset command) -R, --record-separator=STRING set record separator (default: newline) -t, --tuples-only print rows only -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border) -x, --expanded turn on expanded table output Connection options: -h, --host=HOSTNAME database server host or socket directory (default: "sandbox.hortonworks.com") -p, --port=PORT database server port (default: "10432") -U, --username=USERNAME database user name (default: "gpadmin") -w, --no-password never prompt for password -W, --password force password prompt (should happen automatically) For more information, type "\?" (for internal commands) or "\help" (for SQL commands) from within psql, or consult the psql section in the PostgreSQL documentation. Report bugs to <pgsql-bugs@postgresql.org>.
[gpadmin@sandbox ~]$ env | egrep 'PGHOST|PGPORT|PGDATABASE' PGPORT=10432 PGDATABASE=mydemo PGHOST=sandbox.hortonworks.co<br>
NOTE: Having these variables configured is a matter of convenience, else you would end up typing these variables. Here is how we would need to connect if these variables are not set
[gpadmin@sandbox ~]$ psql -h 172.16.105.137 -p 10432 -d mydemo psql (8.2.15) Type "help" for help. mydemo=#
[gpadmin@sandbox ~]$ psql -h 172.16.105.137 -p 10432 -d mydb -c "select * from mytable limit 5" col1 | col2 | col3 ------+------+------ 0 | 0 | 0 1 | 1 | 1 2 | 2 | 2 3 | 3 | 3 4 | 4 | 4 (5 rows)
NOTE We can familiarize ourselves with the utilities and syntaxes later on since the sandbox is meant to tryout and break stuff. Syntaxes are terminated for SQL statements with a semicolon ";" similar to that in hive.
[gpadmin@sandbox ~]$ psql psql (8.2.15) Type "help" for help. mydemo=# \? General \copyright show PostgreSQL usage and distribution terms \g [FILE] or ; execute query (and send results to file or |pipe) \h [NAME] help on syntax of SQL commands, * for all commands \q quit psql Query Buffer \e [FILE] edit the query buffer (or file) with external editor \ef [FUNCNAME] edit function definition with external editor \p show the contents of the query buffer \r reset (clear) the query buffer \s [FILE] display history or save it to file \w FILE write query buffer to file Input/Output \copy ... perform SQL COPY with data stream to the client host \echo [STRING] write string to standard output \i FILE execute commands from file \o [FILE] send all query results to file or |pipe \qecho [STRING] write string to query output stream (see \o) Informational (options: S = show system objects, + = additional detail) \d[S+] list tables, views, and sequences \d[S+] NAME describe table, view, sequence, or index \da[S] [PATTERN] list aggregates ......
mydb=# \dt List of relations Schema | Name | Type | Owner | Storage --------+---------+-------+---------+------------- public | mytable | table | gpadmin | append only (1 row) mydb=#
NOTE To display tables from all the schemas within a database, we can use wildcard characters
mydb=# \dt *.* List of relations Schema | Name | Type | Owner | Storage --------------------+-------------------------------+-------+---------+------------- information_schema | sql_features | table | gpadmin | heap information_schema | sql_implementation_info | table | gpadmin | heap information_schema | sql_languages | table | gpadmin | heap information_schema | sql_packages | table | gpadmin | heap information_schema | sql_parts | table | gpadmin | heap information_schema | sql_sizing | table | gpadmin | heap information_schema | sql_sizing_profiles | table | gpadmin | heap
mydb=# \dn List of schemas Name | Owner --------------------+--------- hawq_toolkit | gpadmin information_schema | gpadmin pg_aoseg | gpadmin pg_bitmapindex | gpadmin pg_catalog | gpadmin pg_toast | gpadmin public | gpadmin (7 rows) mydb=#
mydb=# \l List of databases Name | Owner | Encoding | Access privileges -----------+---------+----------+------------------- mydb | gpadmin | UTF8 | mydemo | gpadmin | UTF8 | postgres | gpadmin | UTF8 | template0 | gpadmin | UTF8 | template1 | gpadmin | UTF8 | (5 rows) mydb=#
mydb=# \du List of roles Role name | Attributes | Member of -----------+-----------------------------------+----------- gpadmin | Superuser, Create role, Create DB | mydb=#
mydb=# \h create user Command: CREATE USER Description: define a new database role Syntax: CREATE USER name [ [ WITH ] option [ ... ] ] where option can be: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'timestamp' | IN ROLE rolename [, ...] | IN GROUP rolename [, ...] | ROLE rolename [, ...] | ADMIN rolename [, ...] | USER rolename [, ...] | SYSID uid | RESOURCE QUEUE queuename mydb=# \h alter database Command: ALTER DATABASE Description: change a database Syntax: ALTER DATABASE name [ [ WITH ] option [ ... ] ] where option can be: CONNECTION LIMIT connlimit ALTER DATABASE name SET parameter { TO | = } { value | DEFAULT } ALTER DATABASE name RESET parameter ALTER DATABASE name RENAME TO newname ALTER DATABASE name OWNER TO new_owner mydb=#
NOTE Total number of key Catalog tables in HAWQ are close to 100. This provides the users with an option to write their own views to sort users/objects and relations rather than learning about thousands of predefined views. Again, playing around with the utility within the Sandbox can help users get familiar with the syntax.