2014-10-17 4 views
1

У меня есть файл CSV, хранящийся на удаленном компьютере. Мне нужно загрузить эти данные в мою базу данных Hive, которая установлена ​​на другой машине. Есть какой-либо способ сделать это?Загрузка данных с удаленной машины в базу данных улья

примечание: я использую Hive 0.12.

ответ

2

Поскольку Hive в основном применяет схему к данным, которые находятся в HDFS, вы захотите создать местоположение в HDFS, переместите туда свои данные и затем создайте таблицу Hive, которая указывает на это местоположение. Если вы используете коммерческое распространение, это может быть возможно из Hue (пользовательский интерфейс пользовательской среды Hadoop).

Вот пример из командной строки.

Создать CSV-файл на локальном компьютере:

$ vi famous_dictators.csv 

... и это то, что выглядит файл как:

$ cat famous_dictators.csv 
1,Mao Zedong,63000000 
2,Jozef Stalin,23000000 
3,Adolf Hitler,17000000 
4,Leopold II of Belgium,8000000 
5,Hideki Tojo,5000000 
6,Ismail Enver Pasha,2500000 
7,Pol Pot,1700000 
8,Kim Il Sung,1600000 
9,Mengistu Haile Mariam,950000 
10,Yakubu Gowon,1100000 

Затем scp CSV-файл на узле кластера:

$ scp famous_dictators.csv hadoop01:/tmp/ 

ssh в узел:

$ ssh hadoop01 

Создать папку в HDFS:

[[email protected] ~]$ hdfs dfs -mkdir /tmp/famous_dictators/ 

Скопируйте CSV файл из локальной файловой системы в папку HDFS:

[[email protected] ~]$ hdfs dfs -copyFromLocal /tmp/famous_dictators.csv /tmp/famous_dictators/ 

Затем войти в улей и создать таблицу:

[[email protected] ~]$ hive 

hive> CREATE TABLE `famous_dictators`(
    > `rank` int, 
    > `name` string, 
    > `deaths` int) 
    > ROW FORMAT DELIMITED 
    > FIELDS TERMINATED BY ',' 
    > LINES TERMINATED BY '\n' 
    > LOCATION 
    > 'hdfs:///tmp/famous_dictators'; 

Теперь вы должны быть в состоянии запросить свои данные в Улье:

hive> select * from famous_dictators; 
OK 
1 Mao Zedong 63000000 
2 Jozef Stalin 23000000 
3 Adolf Hitler 17000000 
4 Leopold II of Belgium 8000000 
5 Hideki Tojo 5000000 
6 Ismail Enver Pasha 2500000 
7 Pol Pot 1700000 
8 Kim Il Sung 1600000 
9 Mengistu Haile Mariam 950000 
10 Yakubu Gowon 1100000 
Time taken: 0.789 seconds, Fetched: 10 row(s) 
+0

спасибо Alex, его рабочий ... – sam

+0

Я рад это слышать, Сэм. Отличная работа! –