Формат CSV Serde в Hive для разных типов значений в таблице

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, чтобы получить смешанные значения столбца пола вместе со значениями другого столбца.

Может ли кто-нибудь помочь мне разобраться, чего не хватает!


person Akash Tyagi    schedule 08.02.2018    source источник
comment
Имена столбцов в обеих таблицах должны быть одинаковыми для вставки и выбора, не уверен, есть ли у вас разные имена столбцов только в примере или нет.   -  person roh    schedule 09.02.2018
comment
@roh они такие же, как в таблице. Проблема возникает при фильтрации данных из одной таблицы улья в другую. Это беспорядок в пустых пространствах   -  person Akash Tyagi    schedule 10.02.2018


Ответы (1)


Вам не нужно использовать csv serde для создания "2016sort". Потому что он не загружается из файла .csv. Вы вставляете его, читая из первой таблицы 2016, которая уже использовала csv serde для загрузки из файла .csv.

И запрос из таблицы 2016 даст простой текст, а не в цитируемой форме.

person Manish Dutt    schedule 30.08.2019