Gpload安裝手冊(Linux版本)
一、python 2.7版本
Linux系統默認是安裝python2.7的,如果沒有需要手動安裝(python版本要求2.4.4以上);
通過命令:python
查看Python版本信息,如下圖:
二、PyYAML包安裝
2.1安裝命令
安裝命令:pip install pyyaml
2.2 檢查安裝
輸入:python
輸入:import yaml
沒有報錯,則表示安裝成功,如下圖:
報錯則需要重新安裝;
如果pip命令安裝不上,則可以離線安裝;
3.3 離線安裝
安裝包下載地址:https://pypi.org/project/PyYAML/#files
下載Linux對應版本的PyYAML包;
將文件拷貝到Linux上,並解壓:tar -zxvf PyYAML-5.1.tar.gz
安裝命令:進入解壓后的文件夾,執行:python setup.py install
三、greenplum-loaders安裝
3.1 greenplum-loaders下載
(1)下載地址:https://network.pivotal.io/products/pivotal-gpdb/#/releases/280281
注意:版本選擇與Grennplum版本一致;
(2)查看Linux系統版本: cat /proc/version
(3)根據需安裝服務器的系統版本,選擇對應的版本:
3.2 greenplum-loaders安裝
(1)解壓
Unzip greenplum-loaders-5.16.0-rhel7-x86_64.zip
解壓縮出來bin格式文件greenplum-loaders-5.16.0-rhel7-x86_64.bin
(2)運行
./greenplum-loaders-5.16.0-rhel7-x86_64.bin
中途提示是否接受協議,選擇yes
一路yes,安裝完成后自動跳到命令行;
注意:程序默認安裝/usr/local/路徑下,可根據自己想要安裝的路徑進行指定;
(3)vi ~/.bashrc
插入 source /usr/local/greenplum-loaders-5.16.0/greenplum_loaders_path.sh
生效命令 source ~/.bashrc
(4)如果安裝不是默認路徑,則需要更改/usr/local/greenplum-loaders-5.16.0/greenplum_loaders_path.sh中GPHOME_LOADERS改為你安裝的路徑;
(5)vi ~/.bash_profile
添加環境GP變量:
export PGDATABASE=addseg(數據庫) export PGHOST=192.25.108.86(Master主機IP) export PGPORT=5432(端口) export PGUSER=gpadmin(用戶名) export PGPASSWORD=123456(密碼)
生效命令 source ~/.bash_profile
(6)配置Greenplum master主機上的pg_hba.conf文件
為了讓Greenplum能夠接受此主機的遠程連接,需要配置Greenplum master主機上的pg_hba.conf文件,需要在其中添加一行表示此主機配置信息,格式為:
host database role CIDR-address authentication-method
host表示連接采用TCP/IP協議,database為此連接匹配的數據庫名(可以為all),role代表為此連接匹配的數據庫用戶(可以為all),CIDR-address代表當客戶端主機的IP地址和此值相匹配時建立連接,authentication-method代表授權方式,包括Trust和md5等方式,Trust代表只要連接即授權,md5代表需要密碼進行授權;
命令:gpstop -u來讓其生效
例如:Vi /home/data/master/gpseg-1/pg_hba.conf
gpstop -u
四、greenplum-loaders 測試
4.1 建表
greenplum集群的master節點上,在addseg數據庫中建立表t02:
進去數據庫:
psql -d addseg
創建表:
create table t02 ( id integer, name varchar(128) );
4.2 創建txt數據文件
在gpload服務器上建立臨時測試數據文件t21.txt:
vi t21.txt
內容:
1|aaa 2|zhangsan 3|wanger 4|mazi
4.3 創建yaml文件
vi t02.yaml
內容:
VERSION: 1.0.0.1 DATABASE: addseg USER: gpadmin HOST: 192.25.108.86 PORT: 5432 GPLOAD: INPUT: - SOURCE: LOCAL_HOSTNAME: - 192.25.105.188 PORT: 55555 FILE: - /home/gpload/data/t21.txt - COLUMNS: - id: int - name: text - FORMAT: text - DELIMITER: '|' - ERROR_LIMIT: 25 OUTPUT: - TABLE: t02 - MODE: INSERT
Yaml配置參數說明:
VERSION: 1.0.0.1 #指定控制文件schema的版本 DATABASE: db_name #指定連接數據庫的名字,如果沒有指定,由環境變量$PGDATABASE,或者通過gpload參數-d指定 USER: db_username #指定連接目標數據庫的用戶名,如果不使用超級管理員,服務參數gp_external_grant_privileges必須設置成on HOST: master_hostname #指定master主機名,也可以通過gpload的-h選項,或者環境變量$PGHOST指定 PORT: master_port #指定master的連接端口號,默認是5432,或者通過gpload命令的-p選項或者環境變量$PGPORT指定。 GPLOAD: #必須指定,表示裝載設置部分在它下面必須定義INPUT:和OUTPUT:兩個部分。 INPUT: #必須指定,這部分指定裝載數據的格式和位置 - SOURCE: #必須指定,定義source文件的位置,每個輸入部分可以定義多個source部分 LOCAL_HOSTNAME: #指定gpload運行的主機名稱和ip地址,如果有多塊網卡,可以同時使用它們,提高裝載速度。默認只使用首選主機名和IP - hostname_or_ip PORT: http_port #指定gpfdist使用的端口,也可以選擇端口范圍,由系統選擇,如果同時指定,port設置優先級| PORT_RANGE: [start_port_range, end_port_range] FILE: #指定裝載數據文件的位置,目錄或者命名管道。如果文件使用gpzip或者bzip2進行了壓縮,它可以自動解壓。可以使用通配符*和C語言風格的關系匹配模式指定多個文件 - /path/to/input_file - COLUMNS: #指定數據源的數據格式,如果沒有指定這部分,source表的列順序,數量,以及數據類型必須與目標表一致 - field_name: data_type - FORMAT: text | csv #指定文件格式是text還是csv - DELIMITER: 'delimiter_character' #指定文本數據域(列)之間的分割符,默認是| - ESCAPE: 'escape_character' | 'OFF' #text定義轉義字符,text格式默認是\,在text格式中可以選擇off關掉轉義字符 - NULL_AS: 'null_string' #指定描述空值的字符串,text格式默認是\N,csv格式不使用轉義符號的空值 - FORCE_NOT_NULL: true | false #csv格式,強制所有字符默認都用”“括起,因此不能有空值,如果兩個分割符之間沒有值,被當做0長度字符串,認為值已經丟失 - QUOTE: 'csv_quote_character' #csv指定轉義字符,默認是" - HEADER: true | false #是否跳過數據文件第一行,當做表頭 - ENCODING: database_encoding #定數據源的字符集 - ERROR_LIMIT: integer #指定由於不符合格式數據記錄的上限,如果超過該上限,gpload停止裝載,否則正確記錄可以被裝載,錯誤記錄拋出寫入錯誤表。但它僅支持數據格式錯誤,不支持違背約束的問題 - ERROR_TABLE: schema.table_name #指定不符合格式要求記錄的錯誤表。如果指定的表不存在系統自動創建 OUTPUT: - TABLE: schema.table_name #指定裝載的目標表 - MODE: insert | update | merge #指定操作模式,默認是insert。merge操作不支持使用隨機分布策略的表 - MATCH_COLUMNS: #為update操作和merge操作指定匹配條件。 - target_column_name - UPDATE_COLUMNS: #為update操作和merge操作指定更新的列 - target_column_name - UPDATE_CONDITION: 'boolean_condition' #指定where條件,目標表中只有滿足條件的記錄才能更改,(merge情況下,只有滿足條件的記錄才能insert) - MAPPING: #指定source列和目標列的映射關系。 target_column_name: source_column_name | 'expression' PRELOAD: #指定load之前的操作 - TRUNCATE: true | false #如果設置成true,裝載之前先刪除目標表中所有記錄,再裝載 - REUSE_TABLES: true | false #設置成true,不會刪除外部表對象或者中間表對象。從而提升性能。 SQL: - BEFORE: "sql_command" #裝載操作開始前執行的SQL,比如寫日志表 - AFTER: "sql_command" #裝載操作之后執行的SQL
4.4 執行yaml文件
(1)gpload服務器上,執行ymal:
輸入:gpload -f t02.yml
(2)greenplum集群的master節點,查看表數據:
安裝成功;