Да.Вы можете загрузить test.txt
из local
в папку HDFS
для внешней таблицы testtable
(<hdfs-uri>/hive/warehouse/testtable
).Это будет работать, даже если <hdfs-uri>/hive/warehouse/
является каталогом хранилища по умолчанию Hive
.
Просто помните - для внешних таблиц (называемых Hive-управляемого ) удаление таблицыавтоматически сбросит каталог HDFS
своего хранилища.Для таблицы external удаление таблицы не приведет к удалению каталога HDFS
, для которого она была создана, и ее необходимо удалить как отдельную операцию.
Иллюстрация:
Here the Hive warehouse directory is hdfs:///apps/hive/warehouse
Создать таблицу
hive> CREATE EXTERNAL TABLE `testtable`(
`id` int,
`name` string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 'hdfs:///apps/hive/warehouse/testtable';
Данные в test.txt
1,name-1
2,name-2
3,name-3
Загрузить данныев HDFS
hadoop fs -put test.txt hdfs:///apps/hive/warehouse/testtable
Таблица запросов
hive> select * from testtable;
1 name-1
2 name-2
3 name-3