Hive - Создание внешней таблицы
Я изучаю улей и читаю статью о том, когда использовать внешнюю таблицу HIVE, и упомянул утверждение ниже.
Для запроса данных, хранящихся во внешней системе, такой как Amazon S3 - Избегайте попадания этих данных в HDFS
Может кто-нибудь уточнить приведенное выше утверждение. "Избегать попадания этих данных в HDFS"? Команда загрузки данных локальная поможет загрузить локальный файл в HDFS, а HIVE применяет формат вверху.
Можно ли получить доступ к данным вне HDFS?
2 ответа
Можно ли получить доступ к данным вне HDFS?
HIve может читать данные в любой файловой системе, совместимой с Hadoop, не только в HDFS.
Может кто-нибудь уточнить вышеприведенное утверждение. "Избегать попадания этих данных в HDFS "?
На примере S3 вы можете создать внешнюю таблицу с расположением s3a://bucket/path
нет необходимости переносить его в HDFS, если вам действительно не нужна скорость чтения HDFS по сравнению с S3. Однако, чтобы сохранить набор данных в эфемерном облачном кластере, результаты должны быть записаны обратно в любое долгосрочное хранилище.
Это возможно. Вы можете попробовать это сами. На CDH у меня есть файл extn\t.txt
[cloudera@quickstart ~]$ pwd
/home/cloudera
[cloudera@quickstart ~]$ cat extn/t.txt
something
[cloudera@quickstart ~]$
Теперь я могу создать внешнюю таблицу для доступа к этому файлу следующим образом
create external table tbl(line string)
location 'file:///home/cloudera/extn'
Опишите таблицу
INFO : OK
+-----------+------------+----------+--+
| col_name | data_type | comment |
+-----------+------------+----------+--+
| line | string | |
+-----------+------------+----------+--+
1 row selected (0.152 seconds)
0: jdbc:hive2://localhost:10000>
Выбрать
INFO : OK
+------------+--+
| tbl.line |
+------------+--+
| something |
+------------+--+
1 row selected (0.134 seconds)
0: jdbc:hive2://localhost:10000>
Опишите отформатированный
+-------------------------------+----------------------------------------------------+-----------------------+--+
| col_name | data_type | comment |
+-------------------------------+----------------------------------------------------+-----------------------+--+
| # col_name | data_type | comment |
| | NULL | NULL |
| line | string | |
| | NULL | NULL |
| # Detailed Table Information | NULL | NULL |
| Database: | default | NULL |
| Owner: | cloudera | NULL |
| CreateTime: | Tue Feb 20 12:49:25 PST 2018 | NULL |
| LastAccessTime: | UNKNOWN | NULL |
| Protect Mode: | None | NULL |
| Retention: | 0 | NULL |
| Location: | file:/home/cloudera/extn | NULL |
| Table Type: | EXTERNAL_TABLE | NULL |
| Table Parameters: | NULL | NULL |
| | COLUMN_STATS_ACCURATE | false |
| | EXTERNAL | TRUE |
| | numFiles | 0 |
| | numRows | -1 |
| | rawDataSize | -1 |
| | totalSize | 0 |
| | transient_lastDdlTime | 1519159765 |
| | NULL | NULL |
| # Storage Information | NULL | NULL |
| SerDe Library: | org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe | NULL |
| InputFormat: | org.apache.hadoop.mapred.TextInputFormat | NULL |
| OutputFormat: | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat | NULL |
| Compressed: | No | NULL |
| Num Buckets: | -1 | NULL |
| Bucket Columns: | [] | NULL |
| Sort Columns: | [] | NULL |
| Storage Desc Params: | NULL | NULL |
| | serialization.format | 1 |
+-------------------------------+----------------------------------------------------+-----------------------+
Загрузка данных отличается. Пожалуйста, проверьте эту Внешнюю Таблицу против Загрузочных Данных