我正在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'。
答案 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属性以指定到目标列的映射。
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)