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

Вставка данных в таблицу улья

Я новичок в улье. Я успешно установил один кластер hashop node для разработки, а поверх него я установил куст и свиньи.

Я создал фиктивную таблицу в улье:

create table foo (id int, name string);

Теперь я хочу вставить данные в эту таблицу. Могу ли я добавлять данные так же, как sql за одну запись за раз? любезно помогите мне с аналогичной командой:

insert into foo (id, name) VALUES (12,"xyz);

Кроме того, у меня есть файл csv, который содержит данные в формате:

1,name1
2,name2
..
..

..


1000,name1000

Как загрузить эти данные в таблицу фиктивных данных?

4b9b3361

Ответ 1

Я думаю, что лучший способ:
a) Копирование данных в HDFS (если их еще нет)
b) Создайте внешнюю таблицу поверх своего CSV, как это

CREATE EXTERNAL TABLE TableName (id int, name string)
ROW FORMAT DELIMITED   
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 'place in HDFS';

c) Вы можете начать использовать TableName уже, отправив ему запросы.
d) если вы хотите вставить данные в другую таблицу Hive:

insert overwrite table finalTable select * from table name;

Ответ 2

Нет прямого способа вставить по одной записи за один раз с терминала, однако здесь есть простой способ прямого перебора, который я обычно использую, когда хочу что-то проверить:

Предполагая, что t - таблица с не менее чем 1 записью. Неважно, какой тип или количество столбцов.

INSERT INTO TABLE foo
SELECT '12', 'xyz'
FROM t
LIMIT 1;

Ответ 4

Какие данные вы вставляете в один текстовый файл или файл журнала, который может поместить один путь в hdfs, а затем записать запрос, как показано ниже, в hive

  hive>load data inpath<<specify inputpath>> into table <<tablename>>;

Пример:

hive>create table foo (id int, name string)
row format delimited
fields terminated by '\t' or '|'or ','
stored as text file;
table created..
    DATA INSERTION::
    hive>load data inpath '/home/hive/foodata.log' into table foo;

Ответ 5

Это ограничение улья.

1. Вы не можете обновлять данные после их установки

2. Нет инструкции "insert into table values ​​..."

3. Вы можете загружать данные только с помощью массовой загрузки

4. Нет команды "удалить из"

5.Вы можете выполнять только массовое удаление

Но вы все же хотите вставить запись из консоли куста, чем вы можете выбрать из statck. см. this

Ответ 6

Вы можете попробовать это, я разработал инструмент для создания сценариев улья из файла csv. Ниже приведены несколько примеров того, как создаются файлы. Инструмент - 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;

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

Ответ 7

Файловая система Hadoop не поддерживает добавление данных в существующие файлы. Хотя, вы можете загрузить свой CSV файл в HDFS и сказать, что Hive рассматривал его как внешнюю таблицу.

Ответ 8

это поддерживается из версии hive 0.14

INSERT INTO TABLE pd_temp (dept, make, cost, id, asmb_city, asmb_ct, retail) VALUES ('production', 'thailand', 10,99202, 'Northcarolina', 'usa', 20)

Ответ 9

чтобы вставить ad-hoc значение типа (12, "xyz" ), выполните следующее:

insert into table foo select * from (select 12,"xyz")a;

Ответ 10

Используйте это -

create table dummy_table_name as select * from source_table_name;

Это создаст новую таблицу с существующими данными, доступными в source_table_name.