gpt4 book ai didi

hadoop - 表中不同值类型的Hive CSV Serde格式

转载 作者:行者123 更新时间:2023-12-02 20:44:11 26 4
gpt4 key购买 nike

CSV文件包含以下混乱格式的用户调查,并包含许多不同的数据类型,例如字符串,整数,范围。

China, 20-30, Male, xxxxx, yyyyy, Mobile Developer; zzzz-vvvv; "$40,000-50,000", Consulting

Japan, 30-40, Female, xxxxx, , Software Developer, zzzz-vvvv; "$40,000-50,000", Development

. . . . .


以下代码用于将CSV文件转换为Hive表,并为每列正确分配各自的值。
add jar /home/cloudera/Desktop/project/csv-serde-1.1.2.jar;
drop table if exists 2016table;

create external table 2016table
(
Country string,
Age string,
Gender string,
Random1 string,
Random2 string,
Occupation string,
Random3 string,
Salary string,
Industry string,
)

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
"separatorChar" = ",",
"quoteChar" = "\"",
"escapeChar" = "\\"
)
STORED AS TEXTFILE;

LOAD DATA LOCAL INPATH "/home/cloudera/survey/2016edited.csv" INTO TABLE 2016table;
这段代码运行良好,每列都分别分配了它们的值。所有选择查询都给出真实的结果。
现在,当尝试从上表(“2016table”)创建另一个表(“2016sort”)时,该表的列数较少,这些值将混合在不同的列中。
用于此的代码
DROP TABLE IF EXISTS 2016sort;

CREATE EXTERNAL TABLE 2016sort (
country1 string,
age1 string,
gender1 string,
occupation1 string,
salary1 string,
)

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
"separatorChar" = ",",
"quoteChar" = "\"",
"escapeChar" = "\\"
)
STORED AS TEXTFILE;

insert into table 2016sort select country,age,gender,occupation,salary from 2016table;
但是这段代码弄乱了值。
2016sort的SELECT性别1给出了性别列的混合值以及其他列的值。
谁能帮我找出缺失的内容!

最佳答案

您无需使用csv serde创建“2016sort”。
因为,它不会从.csv文件加载。您将通过读取第一个'2016table'来插入其中,该表已经使用csv serde从.csv文件加载自身。

并且从'2016table'查询,将给出纯文本作为结果,而不是用引号引起来。

关于hadoop - 表中不同值类型的Hive CSV Serde格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48695148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com