如何在红移光谱表中加载正确的数据?

Posted

技术标签:

【中文标题】如何在红移光谱表中加载正确的数据?【英文标题】:How to load correct data in redshift spectrum table? 【发布时间】:2021-11-23 10:45:31 【问题描述】:

我正在尝试将数据从 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');

它正在生成的输出 -

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

【问题讨论】:

请编辑您的问题以在源文件中显示该行的内容(以便我们查看输入数据)。 【参考方案1】:

问题似乎是 '' 被视为转义字符(serde 默认)。目前尚不清楚您想要的输出中的 '' 后面是什么字符(看起来像一个空格),因此令人困惑。如果您将转义字符更改为不在数据中的字符,则这些字符 ('\') 应该未经解释。我想添加

ESCAPECHAR='^' 

到 SERDEPROPERTIES 会让你更接近。

【讨论】:

以上是关于如何在红移光谱表中加载正确的数据?的主要内容,如果未能解决你的问题,请参考以下文章

无法在红移光谱外部模式中创建视图

如何在红移中加入行并将其转置为列

如何在红移中加入复杂的条件

如何在红移中进行动态正则表达式匹配?

如何在红移中获取过去 X 周的数据?

如何执行与 SSAS 多维数据集在红移上的相同机制?