Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

docker实战 - 安装greenplum

  • 拉取镜像

    docker pull apache/superset:latest
    
  • 创建docker卷用作持久化

    docker volume create gpdata-host
    
  • 启动容器

    docker run -itd -p 5432:5432 --mount source=gpdata-host,target=/gpdata --name greenplum-6.19.2 projectairws/greenplum:latest
    
  • 进入容器

    docker exec -it greenplum-6.19.2 /bin/bash
    
  • 切换到super权限

    su gpadmin
    
  • 执行脚本,修复环境变量(只有修复后,才能执行下面的命令)

    export MASTER_DATA_DIRECTORY=/gpdata/master/gpseg-1
    source /usr/local/greenplum-db/greenplum_path.sh
    
  • 创建用户lianapp

    createuser -P lianapp
    
    • 20QvQ!analytics
  • 创建数据库qin

    createdb qin
    
  • psql进入数据库管理

    psql qin
    
    • 列出角色权限
      \du
      
    • 赋予用户创建数据库的权限
      alter user lianapp createdb;
      
    • 赋予用户对数据库qin的所有权限
      GRANT ALL PRIVILEGES ON DATABASE qin TO lianapp;
      
      GRANT ALL PRIVILEGES ON all tables IN SCHEMA public TO lianapp;
      
      ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES on tables TO lianapp;
      
  • 创建测试数据集1

    • 创建表
      CREATE TABLE test (user_id integer, duration integer, day date) 
      
    • 创建函数,用于写入

    CREATE OR REPLACE FUNCTION public.create_test_data()
    RETURNS integer
    LANGUAGE plpgsql
    AS $function$
    DECLARE i INTEGER ;
    BEGIN
    for i in 1..10000 loop
    insert into test values ((random()*1000.)::numeric(4), (random()*100.)::numeric(4), (current_date - floor((random() * 25))::int)::date);
    end loop;
    return 1;
    END;
    $function$; ```

    • 执行函数,进行写入
      select public.create_test_data();  
      
  • 创建测试数据集1

    • 创建表
      CREATE TABLE test_2 (user_id integer, btn_type varchar(100), day date);
      
    • 创建函数,用于写入

    CREATE OR REPLACE FUNCTION public.create_test_data_2()
    RETURNS integer
    LANGUAGE plpgsql
    AS $function$
    DECLARE i INTEGER ;
    BEGIN
    for i in 1..100000 loop
    insert into test_2 values ((random()*10000.)::numeric(6), (ARRAY['btn1', 'btn2', 'btn3', 'btn4', 'btn5']::text[])[(random() * 4 + 1)::NUMERIC(1)], (current_date - floor((random() * 365))::int)::date);
    end loop;
    return 1;
    END;
    $function$; ```

    • 执行函数,进行写入
      select public.create_test_data_2();