如何在红移光谱table中加载正确的数据?
How to load correct data in redshift spectrum table?
我正在尝试将数据从 s3 存储桶加载到频谱 table,但数据显示不正确。能否请您帮我解决以下问题。
示例:
website
是一列,其中数据是 - www.calidadhh.com/\
但是在加载到 table 时它正在使用其他列值 - 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' = '[=11=]1')
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');
它正在生成的输出 -
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
输出应该是-
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)。不清楚您想要的输出中的 '' 后面是什么字符(看起来像 space),所以很混乱。如果将转义字符更改为数据中不存在的字符,则这些字符 ('\ ') 应该不会被解释。我想添加
ESCAPECHAR='^'
到 SERDEPROPERTIES 会让你离得更近。
我正在尝试将数据从 s3 存储桶加载到频谱 table,但数据显示不正确。能否请您帮我解决以下问题。
示例:
website
是一列,其中数据是 - www.calidadhh.com/\
但是在加载到 table 时它正在使用其他列值 - 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' = '[=11=]1')
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');
它正在生成的输出 -
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
输出应该是-
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)。不清楚您想要的输出中的 '' 后面是什么字符(看起来像 space),所以很混乱。如果将转义字符更改为数据中不存在的字符,则这些字符 ('\ ') 应该不会被解释。我想添加
ESCAPECHAR='^'
到 SERDEPROPERTIES 会让你离得更近。