pingo、palo建表及從pingo往palo數據庫導入數據使用方式

Pingo工作空間建表方式一:

CREATE TABLE `dw.acoustics`.`test20191220`
(`prod_code` string ,
`ball_code` string COMMENT '',
`circle_code` string COMMENT '',
`zp_carrier_code_1` string COMMENT '',
`zp_carrier_code_2` string COMMENT '',
`zp_carrier_code_3` string COMMENT '',
`dm_carrier_code_1` string COMMENT '',
`dm_carrier_code_2` string COMMENT '',
`processid` int COMMENT '',
`routeid` int COMMENT '',
`testproject` string COMMENT '',
`frevalue` string COMMENT '',
`frevalue_new` string, 
 `fre_option` string, 
 `fre_value` string,
`ispass` int COMMENT '',
`servertime` string COMMENT ''
)
/* 如果需要創建分區表增加如下設置 */
PARTITIONED BY (`date` string COMMENT '',`hour` string COMMENT '')

Pingo建表方式二(非分區表):

create table `dw.acoustics`.`alx_aly_all201912` as
select * from ods.iot.iot_2080_mesdcp.iot_2080_mesdcp_alx_aly_all where date=20191219 limit 10

Palo建表語句(推薦使用DUPLICATE模式):

CREATE TABLE data_research.`alx_aly_all_001` (
  `id` varchar(100) COMMENT "",
  `xyrownum` varchar(100) COMMENT "",
  `x1` varchar(100) COMMENT "",
  `y1` varchar(100) COMMENT "",
  `x2` varchar(100) COMMENT "",
  `y2` varchar(100) COMMENT "",
  `date` varchar(100) COMMENT "",
  `hour` varchar(100) COMMENT "",
  `insert_time` datetime COMMENT ""
) ENGINE=OLAP
DUPLICATE  KEY(`id`,`xyrownum`)
DISTRIBUTED BY HASH(`id`) BUCKETS 10
PROPERTIES (
"storage_type" = "COLUMN"
);

往pingo中寫入數據

alter table dw.acoustics.2050_mea_f_t_zongbiao_analysisdata  add if not exists partition(date='{DATE}' ,hour='{HOUR}');
insert overwrite table dw.acoustics.2050_mea_f_t_zongbiao_analysisdata  partition(date='{DATE}' ,hour='{HOUR}')
select 
a.prod_code,
a.ball_code
from (select * from  ods.acoustics.sfc_2050_sfc1216j.2050_tb_txtcollect_zongbiao_all_total a where date='{DATE}'  and hour='{HOUR}' and prod_code is not null ) a
inner join 
(select id,
test_id,
sn,
productnumber,
servertime  from dw.acoustics.2050_mea_f_t_analysisdata where date='{DATE}'  and  sn is not null) b
on  a.prod_code = b.sn

Palo導入數據插件配置樣例:

{
    'job_info': {    # Job信息
        'database_name': 'data_research',    # (需要配置)Palo數據庫名字
        'data_label': 'alx_aly_all_001{%Y%m%d%H%M}',    # (需要配置)導入的label; 必須包含時間宏,保證運行的批次唯一性
        'task_info': {                                     # 任務信息的配置; 可選; 包含以下三個:
            'timeout_second': 3600,             # 任務超時時間
            'exec_mem_limit': 32212254720,
            'max_filter_ratio': 0.00,               # 可容忍數據被過濾比例
            'cluster': 'szwg-ecomon'             # 任務執行隊列; 線上任務都設置爲"szwg-ecomon"
        },
        'broker_info': {
            'broker_name' : 'hdfs',                 #broker 的名稱 show proc '/brokers' 
            'username' : '',                        # username 和 password 爲通過簡單認證訪問hdfs所需用戶名密碼,如果沒有,可以不設置。
            'password' : '', 
            'broker_property' : {                     # broker的property,如果沒有可不設。這裏的具體設置可以通過 help broker load 命令查看,如設置 HA,設置 kerberos 認證信息等。這裏舉例配置 hadoop ha 的配置。其中 bdos,nn1, nn2 需要改成對應hdfs環境配置裏的名稱。
                'dfs.nameservices' : 'bdos',
                'dfs.namenode.rpc-address.bdos.nn1' : 's27.dwh.com:8020',
                'dfs.namenode.rpc-address.bdos.nn2' : 's28.dwh.com:8020',
                'dfs.ha.namenodes.bdos' : 'nn1,nn2'          
            }
        },
        'table_families':                              # 要導入數據的table配置信息; 可一次導入數據到多個table
        [
            {
                'table_family_name': 'alx_aly_all_001',    # (需要配置)要導入palo庫數據table的名字
                'sources':
                [
                    {
                        'file_urls': [                 # (需要配置)要導入數據的存放路徑信息。hdfs_url、base_url、(udw_table及udw_partition)三者需要指定一個。hdfs_url就是原來的base_url。
                            {
                                #'hdfs_url': 'hdfs://szwg-ecomon-hdfs.dmop.baidu.com:54310/xxx/xxx/{%Y%m%d%H%M}/*',
                                'base_url': 'hdfs://bdos/pfs/pingo/warehouse/dw/acoustics.db/alx_aly_all201912/*',
                                #'udw_table': 'default.udwetl_wiseps_display',          #udw的表名。udw_table和udw_partition需要一起使用
                                #'udw_partition': 'event_action=wiseps_display.event_day={%Y%m%d}',   #udw的分區名
                                'batch_offset': 0,         # 等同於Palo數據檢查中的"batch_time_start_offset"
                                'batch_limit': 0,          # 等同於Palo數據檢查中的"batch_time_end_offset"
                                'frequency': 86400,        # 等同於Palo數據檢查中的"batch_time_step"
                            },
                        ],
                        'column_names':['id','x1','y1','x2','y2','xyrownum','date','hour'],    # (需要配置)table的列名; 必須和要pingo表對應的數據文件中列的順序一致
                        'line_end': 'CR',                           # 要導入數據文件的行分隔符; 可以是: CRLF, CR, LF (windows,linux和mac的換行符)
                        'column_separator': '\x01',                    # 要導入數據文件的列分隔符
                        'is_negative': False,                       # 是否將要導入數據文件中的數據取反後,再導入Palo; 一般設置爲False
                        'file_url_redirection': False,              # 以負的形式導入備份數據 
                        #'partition': ['p1', 'p2'],                 # 按分區導入數據
                        #'settings': ['d_year=default_value("3")'], # 設置導入屬性,例如默認值
                    },
                ]
            },
        ]
    },
    'palo_db_conf': {                                         # Palo的DM機器配置信息
        'host': '10.133.0.19',                                # DM機器的名字
        'port': 9021,                                         # DM機器的端口
        'username': 'doris',                                 # Palo用戶名
        'password': '[email protected]',                                # Palo用戶密碼
    },
    #'hadoop_conf': {                                    # Hadoop集羣的配置信息
    #    'backup_cluster': 'hdfs://namenode:port/', # backup的hdfs的地址
    #    'backup_cluster_ugi': 'xxx,xxx',        # 存放備份數據的Hadoop集羣的ugi
    #    'backup_data_path': 'hdfs://szwg-ecomon-hdfs.dmop.baidu.com:54310/xxx/xxx/xxxx'   # 存放備份數據的目錄; 不能包含時間宏; 只需寫到目錄
    #}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章