在BigSQL异常中插入INTO

时间:2015-04-20 07:55:10

标签: biginsights bigsql

我正在Big SQL中创建一个表(比如table1),并将数据从HDFS加载到table1。现在从table1开始,我需要根据特定条件将数据加载到另一个表table2,并且每天在此table2中添加更多数据。每日新数据将加载到table1,相应的新数据也应加入table2

我尝试了以下方法

第一

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

遇到的SQL异常:[状态:42601] [代码:-104]:解析错误:
      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异常:   [状态:58004] [代码:15]:BIGSQL-GEN-0010发现内部错误:
  '无法执行查询'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异常:
  [状态:42601] [代码:-104]:解析错误:

     

<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异常:
  [状态:58004] [代码:15]:BIGSQL-GEN-0010发现内部错误:

     

'无法执行查询'Load from sql query 'select uri, request_timestamp,1 from table1 where $conditions' split column uri into table table2':解析错误:关键字hbase或hive expected'。

如果我使用关键字hive运行

  

遇到的SQL异常:
  [状态:58004] [代码:15]:BIGSQL-GEN-0010发现内部错误:

     

'无法执行查询'Load hive from sql query 'select uri, request_timestamp,1 from table1 where $conditions' split column uri into table table2'`:   originating表达式以(line:1,column:143)结束:由于Hive MetaStore中的错误,语句失败。 Hadoop日志条目标识符:“[4d4e59269]”“:   com.ibm.biginsights.catalog.translator.hive.HiveExceptionTranslator $ HiveNestedException:FAILED:ParseException 1:5输入'来自'期望加载语句中'load'附近的数据

知道如何使用INSERT INTO语句或如何使用IBM BigSQL(版本1)将数据从表加载到另一个

更新


我也试过了LOAD但是获得了豁免

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异常:   [状态:58004] [代码:15]:BIGSQL-GEN-0010发现内部错误:'执行查询失败'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':解析错误:关键字hbase或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异常:   [状态:58004] [代码:15]:BIGSQL-GEN-0010发现内部错误:'执行查询失败'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':解析错误:关键字hbase或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异常:   [状态:58004] [代码:15]:BIGSQL-GEN-0010发现内部错误:'执行查询失败'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)':解析错误:关键字hbase或hive expected'。

1 个答案:

答案 0 :(得分:0)

我认为,你不能以这种方式使用 INSERT

  

INSERT 语句将单行插入到IBM®BigSQL HBase表中。

  

LOAD 语句将数据加载到表中。您可以从远程数据源加载到HBase或Hive。 您可以从您的群集或本地文件加载到HBase或Hive

如果您想首先使用本地文件HIVE DATA,则需要使用EXPORT TO

您的第五个解决方案是您想要的,并且应该改进:

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

select子句中的列必须与目标表定义中列的名称和类型相匹配   否则,必须指定column.names属性以指定到目标列的映射。

  • 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)