CSV-файл содержит опрос пользователя в нижеприведенном беспорядочном формате и содержит множество различных типов данных, таких как строка, целое число, диапазон.
Китай, 20–30, мужчина, xxxxx, yyyyy, мобильный разработчик; zzzz-vvvv; $ 40 000–50 000, Консультации
Япония, 30–40 лет, женщина, xxxxx,, разработчик программного обеспечения, zzzz-vvvv; $ 40 000–50 000, разработка
. . . . .
Приведенный ниже код используется для преобразования файла 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;
Этот код работал нормально, и каждый столбец выделялся отдельно со своими значениями. Все Select Queries дают верный результат.
Теперь при попытке создать другую таблицу (2016sort) из верхней таблицы (2016table) с меньшим количеством значений, значения смешиваются в разных столбцах.
Код, используемый для этого
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;
Но этот код испортил значения. ВЫБЕРИТЕ пол1 из 2016sort, чтобы получить смешанные значения столбца пола вместе со значениями другого столбца.
Может ли кто-нибудь помочь мне разобраться, чего не хватает!