Поскольку 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)
спасибо Alex, его рабочий ... – sam
Я рад это слышать, Сэм. Отличная работа! –