2015-04-20 6 views
0

Я создаю таблицу (скажем table1) в Big SQL и загружаю данные из HDFS в table1. Теперь из этого table1 мне нужно загрузить данные в другую таблицу, скажем table2, исходя из определенных условий и на ежедневной основе добавить больше данных в этот table2. Ежедневные новые данные будут загружены в table1, и соответственно новые данные должны входить в table2.INSERT INTO в случае исключения BigSQL

Я попытался следующие способы

Первый

insert append into table table2 as select uri,localtimestamp,count(*) from table1 group by uri order by uri LIMIT 100; 

SQL Exception(s) Encountered: [State: 42601][Code: -104]: Error parsing:
insert append into table table2 as select uri,localtimestamp,count(*) from table1 group by uri order by uri LIMIT 100;

Второй

insert into table table2 as select uri,localtimestamp,count(*) from table1 group by uri order by uri LIMIT 100; 

SQL Exception(s) Encountered: [State: 58004][Code: 15]: BIGSQL-GEN-0010 Found an internal error:
'Failed to execute query ' insert into table table2 as select uri,localtimestamp,count(*) from table1 group by uri order by uri LIMIT 100;': expected keyword values '.

Третьего

create table if not exists table2(URL_NAME,TODAY_DATE,COUNT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' as select uri,localtimestamp,count(*) from table1 where request_timestamp=localtimestamp group by uri order by uri LIMIT 100; 

В этом случае, каждый день, новая таблица будет создана, в то время как я хочу, чтобы старые данные будут сохранены и новые данные, которые будут добавлены.

Четвертый

Создать таблицу table2

CREATE EXTERNAL TABLE table2 (URL_NAME VARCHAR(500),DATE varchar(50),COUNT INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; 
0 rows affected (total: 0.22s) 

insert overwrite table table2 select uri,localtimestamp,count(*) from table1 group by uri order by uri LIMIT 100; 

SQL Exception(s) Encountered:
[State: 42601][Code: -104]: Error parsing:

<query>insert overwrite table table2 select uri,localtimestamp,count(*) from table1 group by uri order by uri LIMIT 100;</query> Expecting token <into> after token <insert>

Пятый

Load from sql query 'select uri, request_timestamp,1 from table1 where $conditions' split column uri into table table2; 

SQL Exception(s) Encountered:
[State: 58004][Code: 15]: BIGSQL-GEN-0010 Found an internal error:

'Failed to execute query ' Load from sql query 'select uri, request_timestamp,1 from table1 where $conditions' split column uri into table table2 ': parse error: keyword hbase or hive expected'.

И если я бегу с ключевыми словами улья

SQL Exception(s) Encountered:
[State: 58004][Code: 15]: BIGSQL-GEN-0010 Found an internal error:

'Failed to execute query ' Load hive from sql query 'select uri, request_timestamp,1 from table1 where $conditions' split column uri into table table2 '`: originating expression ends at (line: 1, column: 143): The statement failed because of an error in the Hive MetaStore. Hadoop log entry identifier: "[4d4e59269]"": com.ibm.biginsights.catalog.translator.hive.HiveExceptionTranslator$HiveNestedException: FAILED: ParseException line 1:5 mismatched input 'from' expecting DATA near 'load' in load statement

Любая идея, как использовать INSERT INTO заявление или как загрузить данные из таблицы в другую с помощью IBM BigSQL (версия 1)

Update


Я пробовал с LOAD, но получаю expetions

LOAD FROM SQL QUERY 'select t1.uri, t1.request_timestamp,t1.cell_lac from sample.web3 t1 where $conditions' split column t1.uri into table sample.u2_table; 

SQL Exception(s) Encountered: [State: 58004][Code: 15]: BIGSQL-GEN-0010 Found an internal error: 'Failed to execute query 'LOAD FROM SQL QUERY 'select t1.uri, t1. request_timestamp,t1.cell_lac from sample.web3 t1 where $conditions' split column t1.uri into table sample.u2_table' : parse error: keyword hbase or hive expected'.

LOAD FROM SQL QUERY 'select t1.uri, t1.request_timestamp,t1.cell_lac from sample.web3 t1 where $conditions' split column t1.uri into hive table sample.u2_table; 

SQL Exception(s) Encountered: [State: 58004][Code: 15]: BIGSQL-GEN-0010 Found an internal error: 'Failed to execute query 'LOAD FROM SQL QUERY 'select t1.uri, t1.request_timestamp,t1.cell_lac from sample.web3 t1 where $conditions' split column t1.uri into hive table sample.u2_table' : parse error: keyword hbase or hive expected'.

LOAD FROM TABLE sample.web3 COLUMNS (uri,request_timestamp, cell_lac) INTO hive TABLE sample.u2_table APPEND WITH LOAD PROPERTIES (num.map.tasks = 1); 

SQL Exception(s) Encountered: [State: 58004][Code: 15]: BIGSQL-GEN-0010 Found an internal error: 'Failed to execute query 'LOAD FROM TABLE sample.web3 COLUMNS (uri,request_timestamp, cell_lac) INTO hive TABLE sample.u2_table APPEND WITH LOAD PROPERTIES (num.map.tasks = 1)' : parse error: keyword hbase or hive expected'.

ответ

0

Я думаю, вы не можете использовать ВСТАВКУ таким образом:

The INSERT statement inserts a single row into an IBM® Big SQL HBase table.

И

The LOAD statements load data into a table. You can load from a remote data source into HBase or Hive. You can load from your cluster or local files into HBase or Hive.

Если вы хотите использовать локальный файл, используя HIVE DATA сначала вам нужно использовать EXPORT TO.

Ваш пятый решение является то, что вы хотите, и она должна улучшилась:

LOAD FROM SQL QUERY 'select uri, request_timestamp,1 from table1 where $conditions' split column uri into table table2; 

The columns in the select clause must match both the names and the types of the columns in the target table definition.
Otherwise, you must specify the column.names property to specify the mapping to the target columns.

  • 1 не имеет имени
  • использовать псевдоним для вашего table1, как это: ... 'select t1.uri, ... from table1 t1 ... ' SPLIT COLUMN t1.uri ...
  • По-другому вы можете использовать LOAD FROM TABLE table1 COLUMNS (uri,request_timestamp, ...) INTO hbase TABLE table2 APPEND WITH LOAD PROPERTIES (num.map.tasks = 1)
+0

Попробуйте это и обновите здесь.На данный момент серверы Biginsight недоступны :(спасибо за ответ –

+0

попробовали предложенные вами предложения, но получаю исключения. Я обновил ответ, чтобы включить его –