Данные не загружены должным образом из файла CSV в таблицу кустов - PullRequest
1 голос
/ 03 апреля 2019

Привет, я новичок в stackoverflow.Я хочу загрузить CSV-файл в таблицу кустов.Я создал таблицу кустов, используя:

 create table database1.table1(......) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

Также я загрузил данные в таблицу, используя:

LOAD DATA INPATH .... OVERWRITE INTO TABLE database1.table1;

Но когда я запускаю это:

select distinct col1 from table1;

Я получаю значения из других столбцов вместе со значениями из col1 .

По моему мнению, данные не были загружены должным образом (то есть по столбцам) в таблицу кустов.

Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Вы правы, данные не были правильно загружены (т. Е. Столбцы) в таблицу улья.Вы получаете значения из других столбцов вместе со значениями из col1, что означает, что все значения строк сохраняются / загружаются в столбец 1.

Полный оператор, использованный для создания таблицы, не ставится под сомнение.Поэтому я использовал следующий оператор DDL для создания таблицы.

create table table1 (
date_received string,
Product varchar(100),
Sub_product string,
Issue string,
Sub_issue string,
Consumer_complaint_narrative string,
Company_public_response string,
Company string,
State string,
ZIP_code string,
Tags string,
Consumer_consent_provided string,
Submitted_via string,
Date_sent_to_company string,
Company_response_to_consumer string,
Timely_response varchar(3),
Consumer_disputed string,
Complaint_ID bigint
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
with SERDEPROPERTIES ( "separatorChar"=",","skip.header.line.count"="1")
stored as textfile;

Использовал следующий оператор для загрузки данных

load data inpath '/user/test/Complaints2months.csv' into table table1;

Подтвердил это в моем локальном хранилище и загружает данные правильно.Надеюсь, что это решит вашу проблему.

Примечания:

  1. "separatorChar" = "," - Символ разделителя по умолчанию - ',', поэтому это свойство не являетсяв этом случае обязательно.
  2. Вместо класса SERDE вы также можете использовать ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
  3. Также таблица хранится в формате TEXTFILE.Это связано с форматом входного файла.Команда «загрузить данные» не выполняет никаких преобразований данных.
0 голосов
/ 03 апреля 2019

Вы можете проверить это, выполнив cat файла, который принадлежит этой таблице в HDFS, и посмотрите, отсутствует ли значение для столбца для каких-либо записей.

hdfs dfs -cat <hdfs_path/file>

Вы можете получить этот путь HDFS, если не знаете его, выполнив приведенный ниже запрос в Hive.

SHOW CREATE TABLE database1.table1;

Ищите слово LOCATION в результате вышеприведенного запроса, и вы можете получить путь HDFS.

Подсказка: вы можете получить файл на локальном компьютере и загрузить данные в таблицу Excel с запятой в качестве разделителя и посмотреть, нет ли каких-либо пропущенных значений для каких-либо строк.

Чтобы получить файл из локальной файловой системы HDFS: hdfs dfs -get <HDFS_Path> <local_path>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...