2017-01-03 4 views
0

Я пытаюсь создать таблицу HBase, используя Hive (которую я намерен заполнить из другой таблицы Hive с помощью вставки), через следующее:Таблица HBase ??? не существует, пока таблица объявлена ​​как внешняя таблица

CREATE EXTERNAL TABLE HBWeather (key struct<USAF:INT, WBAN:INT, `Date`:STRING>, TEMP INT) 
ROW FORMAT DELIMITED 
COLLECTION ITEMS TERMINATED BY '~' 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ('hbase.columns.mapping'=':key,T:Temp'); 

Однако я получаю следующее сообщение об ошибке:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:MetaException(message:HBase table hbweather doesn't exist while the table is declared as an external table.) 
    at org.apache.hadoop.hive.hbase.HBaseStorageHandler.preCreateTable(HBaseStorageHandler.java:225) 
    at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:731) 
    at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:724) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:154) 
    at com.sun.proxy.$Proxy23.createTable(Unknown Source) 
    at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:830) 
    at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:845) 
    at org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:3979) 
    at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:333) 
    at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:197) 
    at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:100) 
    at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1858) 
    at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1562) 
    at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1313) 
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1084) 
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1072) 
    at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:232) 
    at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:183) 
    at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:399) 
    at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:776) 
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:714) 
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 
) 

Что проблема именно? и как это исправить?

Заранее спасибо

ответ

0

«Место» компонент вашей команды, чтобы создать внешнюю таблицу отсутствует. Поскольку вы указали «внешний», вы должны указать путь файловой системы на HDFS, где Hive создаст таблицу. Это ошибка, сообщенная на 1-й строке.

Смежные вопросы