я создал внешнюю таблицу в Hive
используя следующее:Где хранятся метаданные HIVE по умолчанию?
create external table hpd_txt(
WbanNum INT,
YearMonthDay INT ,
Time INT,
HourlyPrecip INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
stored as textfile
location 'hdfs://localhost:9000/user/hive/external';
Теперь эта таблица создается в папке */hive/external
.
Шаг-1: Я загрузил данные в этой таблице, используя:
load data inpath '/input/hpd.txt' into table hpd_txt;
данные успешно загружены по указанному пути (*/external/hpd_txt
)
Шаг 2: я удалить таблица от */hive/external
Путь, используя следующие данные:
hadoop fs -rmr /user/hive/external/hpd_txt
Вопросы:
- Почему таблица удалена из исходного пути? (
*/input/hpd.txt
удаляется из hdfs, но таблица создается в*/external
path) - После удаления таблицы из HDFS, как на шаге 2, и снова использую show tables; Он по-прежнему дает таблицу hpd_txt во внешнем пути. поэтому откуда это.
Заранее спасибо.
Спасибо invoketheshell для уточнения! Еще одна вещь, которую я хочу знать, - это то, почему файл в HDFS, который загружается в таблицу, удален из его пути, где он был первоначально сохранен с использованием команды -copyFromLocal? –
-copyFromLocal - это то же самое, что и я. Он должен скопировать файл и поместить его в указанный пункт назначения внутри HDFS. – invoketheshell
На самом деле я заметил одно. Когда я создаю таблицу в месте, скажите /dir......и затем загрузите данные в таблицу (загрузите данные inpath ....), файл больше не находится на более раннем пути (который копируется в) , но теперь присутствует в пути/dir. Это потому, что данные все еще находятся в hdfs, но путь просто изменяется? –