簡體   English   中英

如何在紅移光譜表中加載正確的數據?

[英]How to load correct data in redshift spectrum table?

我正在嘗試將數據從 s3 存儲桶加載到頻譜表,但數據顯示不正確。 您能幫我解決以下問題嗎?

例子:

website是數據所在的一列 - www.calidadhh.com/\

但是在加載到表中時,它會占用其他列值 - www.calidadhh.com/Home Health Agency Corporation

我在查詢下方運行 -

drop table schema.dhs_account_ovrvw;
create external table schema.dhs_account_ovrvw(
hospital_id INTEGER
,hospital_name VARCHAR(255)
,hq_address VARCHAR(255)
,hq_address1 VARCHAR(255)
,hq_city VARCHAR(255)
,hq_state VARCHAR(50)
,hq_zip_code VARCHAR(50)
,hq_county VARCHAR(255)
,website VARCHAR(20000)
,firm_type VARCHAR(510)
,rec_add_user_nm VARCHAR(20)
,rec_add_tms TIMESTAMP
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ('quoteChar' = '\"','escapeChar' = '\\','separatorChar' = '\001')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://*******/Refined_Layer/DHS_ACC_OVRVW/'
TABLE PROPERTIES ('skip.header.line.count' = '1');

Output 它正在生成 -

hospital_id,hospital_name,hq_address,hq_address1,hq_city,hq_state,hq_zip_code,hq_county,website,firm_type,rec_add_user_nm,rec_add_tms
929719  Calidad Home Health & Hospice   1600 E Expy 83      La Feria    TX  78559   TX - Cameron    www.calidadhh.com/Home Health Agency Corporation   CDP_USER    2021-11-22 07:39:57 

Output 應該是 -

hospital_id,hospital_name,hq_address,hq_address1,hq_city,hq_state,hq_zip_code,hq_county,website,firm_type,rec_add_user_nm,rec_add_tms
929719  Calidad Home Health & Hospice   1600 E Expy 83      La Feria    TX  78559   TX - Cameron    www.calidadhh.com/\  Home Health Agency Corporation CDP_USER    2021-11-22 07:39:57

問題似乎是 '' 被視為轉義字符(serde 默認)。 目前尚不清楚您想要的 output(看起來像一個空格)中的 '' 后面是什么字符,所以它很混亂。 如果將轉義字符更改為不在數據中的字符,則這些字符 ('\') 應該未經解釋。 我認為添加

ESCAPECHAR='^' 

到 SERDEPROPERTIES 會讓你更接近。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM