0
我被卡住了,目前還找不到任何解決方案。 我需要將固定長度文件轉換爲控件A分隔但文件模式是基於atrribute之一即record_type該特定記錄的模式更改。我不知道誰可以將此固定文件轉換爲分隔文件。在Hadoop中處理條件文件
取樣記錄:
NCBDX**DD**00C98 0002016-01-0402.30.33013000895527 821064 07.30.332016-01-0400895527 000000
NCBDX**DT**00C98 5108050000007851 000821064 0R
Abinitio DML :-
record //RECORD-START
ascii string(1) RECORD_PREFIX;
ascii string(4) TRANSMISSION_PROCESS;
ascii string(2) RECORD_TYPE;
ascii string(5) HEADER_INSTITUTION_ID;
ascii string(11) HEADER_PREFIX_NUMBER;
if (record_type=="DT") //Changed single quotes to double quotes - Sathish Ethiraj
record //digital_transaction_rec
ascii string("\001") dt_cardholder_account_number=NULL("");
ascii decimal("\001") dt_member_number=NULL("");
ascii string("\001") dt_terminal_sequence_number=NULL("");
ascii string("\001") dt_tokenization_message_type=NULL("");
ascii string("\001") dt_payment_token=NULL("");
ascii string("\001") dt_token_expiration_date=NULL("");
ascii string("\001") dt_account_number_indicator=NULL("");
ascii string("\001") dt_tokenization_event_indicator=NULL("");
ascii string("\001") dt_transaction_status_indicator=NULL("");
ascii string("\001") dt_transaction_category_code=NULL("");
ascii string("\001") dt_payment_initiation_channel=NULL("");
ascii string("\001") dt_wallet_program_indicator=NULL("");
ascii string("\001") dt_on_behalf_service_1=NULL("");
ascii string("\001") dt_on_behalf_service_2=NULL("");
ascii string("\001") dt_on_behalf_result_1=NULL("");
ascii string("\001") dt_on_behalf_result_2=NULL("");
ascii string("\001") dt_primary_account_number_source=NULL("");
ascii string("\001") dt_payment_appn_instance_id=NULL("");
if (record_type=="DD")
record // DOLLAR-LOG-REC
ascii string("\001") dd_hdr_instun_id =NULL("");
ascii string("\001") dd_hdr_prfx_num =NULL("");
ascii string("\001") dd_cdhldr_acct_num =NULL("");
ascii string("\001") dd_mbr_num =NULL("");
ascii string("\001") dd_mtv_trxn_dt =NULL("");
ascii string("\001") dd_mtv_trxn_tm =NULL("");
ascii string("\001") dd_trxn_rqst_type_cd =NULL("");
ascii string("\001") dd_trmnl_num =NULL("");
ascii string("\001") dd_trmnl_seq_num =NULL("");
我嘗試使用SUBSTR功能和加載到HIVE,但我不能夠把條件。在這方面的任何幫助將是非常有幫助的。
感謝亞歷克斯,我們正在使用豬分割文件,我試圖在HIVE中做同樣的事情。 – Shrikant