大规模集群的加载使用限制

支持ftp/http/hdfs多种协议。

定长加载模式
当使用定长加载模式时,必须指定FIELDS DEFINER的值。
文本加载模式
当使用文本加载模式时,NULL_VALUE的默认值为'N'。
当使用文本加载方式时,行分隔符默认为'n'。
当使用文本加载方式时,如果某列数据可能包含了行分隔符,则需要在SQL中输入'HAVING LINES SEPARATOR'子句,同时需要输入'ENCLOSED BY'指定字段包围符。

大规模集群加载服务核心功能

核心功能:
1、支持多加载机
2、支持多个数据源对一个表的同时加载
3、支持加载表状态的监控
4、支持以SQL接口方式进行加载
5、支持加载的高可用, 加载接入点gcluster异常后,能够支持加载的failover
6、支持加载对错误数据的溯源功能
7、支持GBK和UTF8字符编码格式的加载
8、支持多种协议的数据获取方式
9、支持多种数据格式
10、支持加载程序的性能随着节点数的增加而线性提升

使用LOAD DATA INFILE数据加载,数据能否对命名管道(Named Pipe)加载?

8611版本集群加载工具load data infile目前不支持本地文件的加载,数据文件可以放在任意通用的ftp、http、hadoop服务器上。目前数据来源只能是文件方式存放,不支持命名管道,因为linux下命名管道不支持远程,并且不能预先获取文件大小。

使用新建数据库用户加载数据需要的最小权限是什么?

对于随机分布表、复制表、nocopies表的加载需要file权限,加载表的insert权限,gbase.table_distribution的select权限;
对于哈希分布表,除了需要上述权限外,还需要gbase.nodedatamap的select权限。

加载随机分布表、复制表、nocopies表用户权限示例:
gbase> show grants for u1;
+--------------------------------------------------------------------------------------------------+
| Grants for u1@%                                              |
+--------------------------------------------------------------------------------------------------+
| GRANT FILE ON *.* TO 'u1'@'%' IDENTIFIED BY PASSWORD 
'*556BEF296211C2AF58F53DA3EDDD0A3371B6ECD5' |
| GRANT INSERT ON "db1"."t1" TO 'u1'@'%'                          |
| GRANT SELECT ON "gbase"."table_distribution" TO 'u1'@'%'            |
+--------------------------------------------------------------------------------------------------+
3 rows in set (Elapsed: 00:00:00.00)
加载哈希分布表用户权限示例:
gbase> show grants for u1;
+--------------------------------------------------------------------------------------------------+
| Grants for u1@%                                              |
+--------------------------------------------------------------------------------------------------+
| GRANT FILE ON *.* TO 'u1'@'%' IDENTIFIED BY PASSWORD 
'*556BEF296211C2AF58F53DA3EDDD0A3371B6ECD5' |
| GRANT INSERT ON "db1"."t2" TO 'u1'@'%'                          |
| GRANT SELECT ON "gbase"."table_distribution" TO 'u1'@'%'            |
| GRANT SELECT ON "gbase"."nodedatamap" TO 'u1'@'%'               |
+--------------------------------------------------------------------------------------------------+
4 rows in set (Elapsed: 00:00:00.00)

集群通过jdbc获取加载skip行数的解决办法

参考以下代码

public void testLoadData2 throws SQLException{
         String insSql="";
         String loadSql="";
         Connection conn= this.conn;
         StatementImpl stmt = (StatementImpl) conn.createStatement();
         stmt.execute(loadSql);
         long skippedLines = stmt.getSkippedLines();
         
         PrepareStatement pst = conn.prepareStatement(loadSql);
         pst.execute();
         skippedLines =((com.gbase.jdbc.PrepareStatement) pst).getSkippedLines();

 }