• hawq创建filespace,tablespace,database,table


    使用HAWQ

      在HAWQ的使用上跟Greenplum基本就一样一样的了。比如: 
     1. 创建表空间

    #选创建filespace,生成配置文件
    [gpadmin@master ~]$ hawq filespace -o hawqfilespace_config
    Enter a name for this filespace
    > hawqfs
    Enter replica num for filespace. If 0, default replica num is used (default=3)
    > 0
    
    Please specify the DFS location for the filespace (for example: localhost:9000/fs)
    location> master:8020/fs
    #执行创建
    [gpadmin@master ~]$ hawq filespace --config ./hawqfilespace_config 
    Reading Configuration file: './hawqfilespace_config'
    
    CREATE FILESPACE hawqfs ON hdfs 
    ('slave2:8020/fs/hawqfs')
    20161121:11:26:25:122509 hawqfilespace:master:gpadmin-[INFO]:-Connecting to database
    20161121:11:27:38:122509 hawqfilespace:master:gpadmin-[INFO]:-Filespace "hawqfs" successfully created
    
    #再创建表空间
    [gpadmin@master ~]$ psql template1
    psql (8.2.15)
    Type "help" for help.
    
    template1=# 
    template1=# CREATE TABLESPACE hawqts FILESPACE hawqfs;
    CREATE TABLESPACE

     2. 创建数据库

    template1=# CREATE DATABASE testdb WITH TABLESPACE=hawqts; #指定存储表空间为hawqts
    CREATE DATABASE

      3. 创建表到新的数据库中

    [gpadmin@master ~]$ psql testdb  //这里指定连接到新的数据库中
    testdb=# create TABLE books( 
    testdb(#   id integer
    testdb(#   , isbn varchar(100)
    testdb(#   , category varchar(100)
    testdb(#   , publish_date TIMESTAMP
    testdb(#   , publisher varchar(100)
    testdb(#   , price money 
    testdb(# ) DISTRIBUTED BY (id);  #指定表的数据打散列 
    CREATE TABLE

      创建的表默认都创建在了public schema中,也就是所有用户都可以访问,但可以在建表时指定schema. 如: testschema.books 
     4. 加载数据文件到表中

    testdb=# COPY books(id,isbn,category,publish_date,publisher,price) 
    testdb-# FROM '/tmp/books'
    testdb-# WITH
    testdb-# DELIMITER AS '|'
    testdb-# ;
    COPY 15970428
    Time: 41562.606 ms

      加载速度达到了 380248条/秒. 还是不错的 
     5. 查询表, HAWQ作为主用于数据仓库的数据库在SQL支持方面非常丰富,在标准SQL基础上,还支持OLAP的窗口函数,窗口函数等。

    testdb=# SELECT COUNT(*) FROM books;
      count   
    ----------
     15970428
    (1 row)
    
    Time: 4750.786 ms
    //求每个类别下的最高价,最低价
    testdb=# SELECT category, max(price) max_price, min(price) min_price
    testdb-# FROM books
    testdb-# group by category
    testdb-# LIMIT 5;
        category    | max_price | min_price 
    ----------------+-----------+-----------
     COMPUTERS      |   $199.99 |     $5.99
     SELF-HELP      |   $199.99 |     $5.99
     COOKING        |   $199.99 |     $5.99
     SOCIAL-SCIENCE |   $199.99 |     $5.99
     SCIENCE        |   $199.99 |     $5.99
    (5 rows)
    
    Time: 4755.163 ms
    //求每类别下的最高,最小价格,及对应的BOOK ID
    testdb=# SELECT category
    testdb-#  , max(case when desc_rn = 1 then id end) max_price_id, max(case when desc_rn = 1 then id end) max_price
    testdb-#  , max(case when asc_rn = 1 then id end) min_price_id, max(case when asc_rn = 1 then id end) min_price
    testdb-# FROM (
    testdb(#  SELECT id, category, price
    testdb(#   , row_number() over(PARTITION BY category ORDER BY price desc) desc_rn
    testdb(#   , row_number() over(PARTITION BY category ORDER BY price asc) asc_rn
    testdb(#  FROM books
    testdb(# ) t
    testdb-# WHERE desc_rn = 1 or asc_rn = 1
    testdb-# GROUP BY category
    testdb-# limit 5;
        category    | max_price_id | max_price | min_price_id | min_price 
    ----------------+--------------+-----------+--------------+-----------
     CRAFTS-HOBBIES |        86389 |   $199.99 |      7731780 |     $5.99
     GAMES          |      5747114 |   $199.99 |     10972216 |     $5.99
     STUDY-AIDS     |      2303276 |   $199.99 |     13723321 |     $5.99
     ARCHITECTURE   |      9294400 |   $199.99 |      7357451 |     $5.99
     POETRY         |      7501765 |   $199.99 |       554714 |     $5.99
    (5 rows)
    
    Time: 23522.772 ms

    6. 使用HAWQ查询HIVE数据

      HAWQ是一个基于HDFS的一个独立的数据库系统,若需要访问其它第三方数据,则还需要再安装HAWQ Extension Framework (PXF) 插件。PXF支持在HDFS上的HiveHbase数据,还支持用户开发自定义的其它并行数据源的连接器。

    7. 最后

      HAWQ作为一个从Greenplum更改过来的系统,在功能上支持上还是非常丰富的,除了上面介绍的查询功能外,还支持像PL/Java, PL/Perl, PL/pgSQL, PL/Python, PL/R等存储过程。但个人觉得,它最大的缺点就是这是一个独立的数据库,在当前的这样一个具有多种多样组件的HADOOP平台上,不能实现数据共享,进而根据不同场景采用多种数据处理方式着实是一大遗憾。

    8.登录之后给默认用户“postgres”设置密码

    postgres=# password postgres          #给postgres用户设置密码
    Enter new password:
    Enter it again:
    postgres=#

    使用HAWQ

      在HAWQ的使用上跟Greenplum基本就一样一样的了。比如: 
     1. 创建表空间

    #选创建filespace,生成配置文件
    [gpadmin@master ~]$ hawq filespace -o hawqfilespace_config
    Enter a name for this filespace
    > hawqfs
    Enter replica num for filespace. If 0, default replica num is used (default=3)
    > 0
    
    Please specify the DFS location for the filespace (for example: localhost:9000/fs)
    location> master:8020/fs
    #执行创建
    [gpadmin@master ~]$ hawq filespace --config ./hawqfilespace_config 
    Reading Configuration file: './hawqfilespace_config'
    
    CREATE FILESPACE hawqfs ON hdfs 
    ('slave2:8020/fs/hawqfs')
    20161121:11:26:25:122509 hawqfilespace:master:gpadmin-[INFO]:-Connecting to database
    20161121:11:27:38:122509 hawqfilespace:master:gpadmin-[INFO]:-Filespace "hawqfs" successfully created
    
    #再创建表空间
    [gpadmin@master ~]$ psql template1
    psql (8.2.15)
    Type "help" for help.
    
    template1=# 
    template1=# CREATE TABLESPACE hawqts FILESPACE hawqfs;
    CREATE TABLESPACE
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

     2. 创建数据库

    template1=# CREATE DATABASE testdb WITH TABLESPACE=hawqts; #指定存储表空间为hawqts
    CREATE DATABASE
    • 1
    • 2
    • 1
    • 2

     3. 创建表到新的数据库中

    [gpadmin@master ~]$ psql testdb  //这里指定连接到新的数据库中
    testdb=# create TABLE books( 
    testdb(#   id integer
    testdb(#   , isbn varchar(100)
    testdb(#   , category varchar(100)
    testdb(#   , publish_date TIMESTAMP
    testdb(#   , publisher varchar(100)
    testdb(#   , price money 
    testdb(# ) DISTRIBUTED BY (id);  #指定表的数据打散列 
    CREATE TABLE
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

      创建的表默认都创建在了public schema中,也就是所有用户都可以访问,但可以在建表时指定schema. 如: testschema.books 
     4. 加载数据文件到表中

    testdb=# COPY books(id,isbn,category,publish_date,publisher,price) 
    testdb-# FROM '/tmp/books'
    testdb-# WITH
    testdb-# DELIMITER AS '|'
    testdb-# ;
    COPY 15970428
    Time: 41562.606 ms
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

      加载速度达到了 380248条/秒. 还是不错的 
     5. 查询表, HAWQ作为主用于数据仓库的数据库在SQL支持方面非常丰富,在标准SQL基础上,还支持OLAP的窗口函数,窗口函数等。

    testdb=# SELECT COUNT(*) FROM books;
      count   
    ----------
     15970428
    (1 row)
    
    Time: 4750.786 ms
    //求每个类别下的最高价,最低价
    testdb=# SELECT category, max(price) max_price, min(price) min_price
    testdb-# FROM books
    testdb-# group by category
    testdb-# LIMIT 5;
        category    | max_price | min_price 
    ----------------+-----------+-----------
     COMPUTERS      |   $199.99 |     $5.99
     SELF-HELP      |   $199.99 |     $5.99
     COOKING        |   $199.99 |     $5.99
     SOCIAL-SCIENCE |   $199.99 |     $5.99
     SCIENCE        |   $199.99 |     $5.99
    (5 rows)
    
    Time: 4755.163 ms
    //求每类别下的最高,最小价格,及对应的BOOK ID
    testdb=# SELECT category
    testdb-#  , max(case when desc_rn = 1 then id end) max_price_id, max(case when desc_rn = 1 then id end) max_price
    testdb-#  , max(case when asc_rn = 1 then id end) min_price_id, max(case when asc_rn = 1 then id end) min_price
    testdb-# FROM (
    testdb(#  SELECT id, category, price
    testdb(#   , row_number() over(PARTITION BY category ORDER BY price desc) desc_rn
    testdb(#   , row_number() over(PARTITION BY category ORDER BY price asc) asc_rn
    testdb(#  FROM books
    testdb(# ) t
    testdb-# WHERE desc_rn = 1 or asc_rn = 1
    testdb-# GROUP BY category
    testdb-# limit 5;
        category    | max_price_id | max_price | min_price_id | min_price 
    ----------------+--------------+-----------+--------------+-----------
     CRAFTS-HOBBIES |        86389 |   $199.99 |      7731780 |     $5.99
     GAMES          |      5747114 |   $199.99 |     10972216 |     $5.99
     STUDY-AIDS     |      2303276 |   $199.99 |     13723321 |     $5.99
     ARCHITECTURE   |      9294400 |   $199.99 |      7357451 |     $5.99
     POETRY         |      7501765 |   $199.99 |       554714 |     $5.99
    (5 rows)
    
    Time: 23522.772 ms

     

    5. 使用HAWQ查询HIVE数据

      HAWQ是一个基于HDFS的一个独立的数据库系统,若需要访问其它第三方数据,则还需要再安装HAWQ Extension Framework (PXF) 插件。PXF支持在HDFS上的HiveHbase数据,还支持用户开发自定义的其它并行数据源的连接器。

    7. 最后

      HAWQ作为一个从Greenplum更改过来的系统,在功能上支持上还是非常丰富的,除了上面介绍的查询功能外,还支持像PL/Java, PL/Perl, PL/pgSQL, PL/Python, PL/R等存储过程。但个人觉得,它最大的缺点就是这是一个独立的数据库,在当前的这样一个具有多种多样组件的HADOOP平台上,不能实现数据共享,进而根据不同场景采用多种数据处理方式着实是一大遗憾。

  • 相关阅读:
    浅析 c# Queue
    c# Stack操作类
    delegate,event, lambda,Func,Action以及Predicate
    推翻MMSOA与WEBService,使用MEMBRANE soap Monitor检查 wsdl文件。
    JS打印表格(HTML定义格式)
    坑爹的META 刷新页面 框架页面中TOP页面提示刷新 meta元素设置而不基于 JS 的坑爹写法。
    Silverlight载入动画(简易)
    WPF先开了再说
    跨域WEB Service 调用(摘自ASP.NET高级编程第三版)
    安装程序找不到Office.zhcn\OfficeMUI问题
  • 原文地址:https://www.cnblogs.com/wq3435/p/6610346.html
Copyright © 2020-2023  润新知