Подтвердить что ты не робот

Hadoop/Hive: Загрузка данных с .csv на локальном компьютере

Как это происходит от новичков...

У меня были Hadoop и Hive настроены для меня, поэтому я могу запускать запросы Hive на моем компьютере, получая доступ к данным в кластере AWS. Могу ли я запустить Hive-запросы с данными .csv, хранящимися на моем компьютере, например, с MS SQL Server?

Как мне загрузить данные .csv в Hive? Что это связано с Hadoop и в каком режиме я должен запустить этот?

Какие настройки мне нужно позаботиться, чтобы, если я сделал что-то не так, я всегда могу вернуться и запустить запросы на Amazon без ущерба для того, что было настроено для меня раньше?

4b9b3361

Ответ 1

Позвольте мне проделать следующие простые шаги:

Шаги:

Сначала создайте таблицу на улье, используя имена полей в вашем файле csv. Например, ваш файл csv содержит три поля (id, name, pay) и вы хотите создать таблицу в улье под названием "staff". Используйте приведенный ниже код, чтобы создать таблицу в кусте.

hive> CREATE TABLE Staff (id int, name string, salary double) row format delimited fields terminated by ',';

Во-вторых, теперь, когда ваша таблица создана в улье, давайте загрузим данные в ваш файл csv в таблицу "staff" на hive.

hive>  LOAD DATA LOCAL INPATH '/home/yourcsvfile.csv' OVERWRITE INTO TABLE Staff;

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

hive> SELECT * FROM Staff;

Спасибо.

Ответ 2

Если у вас есть установка улья, вы можете напрямую разместить локальный набор данных с помощью команды загрузки Hive в hdfs/s3.

При написании команды загрузки вам нужно будет использовать ключевое слово "Local".

Синтаксис команды hiveload

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

Для получения более подробной информации см. ссылку ниже. https://cwiki.apache.org/confluence/display/Hive/LanguageManual%20DML#LanguageManualDML-Loadingfilesintotables

Ответ 3

Есть еще один способ включить это,

  • используйте hasoop hdfs -copyFromLocal, чтобы скопировать файл данных .csv с вашего локального компьютера в место где-нибудь в HDFS, например '/path/filename'

  • войдите в консоль Hive, запустите следующий script, чтобы загрузить из файла, чтобы сделать его как таблицу Hive. Обратите внимание, что '\ 054' - это код ascii 'comma' в восьмеричном числе, представляющий разделитель полей.

СОЗДАТЬ имя таблицы EXTERNAL TABLE (foo INT, bar STRING)  COMMENT 'из csv файла'  ROW FORMAT DELIMITED FIELDS TERMINATED BY '\ 054'  ХРАНЕНИЕ КАК ТЕКСТИРОВАТЬ  LOCATION '/path/filename';

Ответ 4

Вы можете попробовать это, Ниже приведены несколько примеров того, как создаются файлы. Инструмент - https://sourceforge.net/projects/csvtohive/?source=directory

  • Выберите файл CSV с помощью Browse и установите корневой каталог hasoop ex:/user/bigdataproject/

  • Инструмент генерирует Hadoop script со всеми файлами csv, а следующий пример созданный Hadoop script для вставки csv в Hadoop

    #!/bin/bash -v
    hadoop fs -put ./AllstarFull.csv /user/bigdataproject/AllstarFull.csv hive -f ./AllstarFull.hive

    hadoop fs -put ./Appearances.csv /user/bigdataproject/Appearances.csv hive -f ./Appearances.hive

    hadoop fs -put ./AwardsManagers.csv /user/bigdataproject/AwardsManagers.csv hive -f ./AwardsManagers.hive

  • Пример сгенерированных сценариев улья

    CREATE DATABASE IF NOT EXISTS lahman;
    USE lahman;
    CREATE TABLE AllstarFull (playerID string,yearID string,gameNum string,gameID string,teamID string,lgID string,GP string,startingPos string) row format delimited fields terminated by ',' stored as textfile;
    LOAD DATA INPATH '/user/bigdataproject/AllstarFull.csv' OVERWRITE INTO TABLE AllstarFull;
    SELECT * FROM AllstarFull;

Спасибо Виджей

Ответ 5

Для данных csv file formate будет находиться ниже формата

"column1", "column2","column3","column4"

И если мы будем использовать поле, завершенное ',', то каждый столбец получит значения, как показано ниже.

"column1"    "column2"     "column3"     "column4"

если любое значение столбца имеет comma как значение, то оно вообще не работает.

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

create table tableName (column1 datatype, column2 datatype , column3 datatype , column4 datatype)
ROW FORMAT SERDE 
'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
STORED AS TEXTFILE ;