集群通过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();

 } 

文本文件宽松加载模式(format 5)适用范围

1、包围符中有行分隔符的数据;
2、包围符中有包围符的数据(配对或不配对);
3、字符型数据超过表定义字段宽度;
4、对于数值型字段和日期型字段,实际数据类型与对应的字段类型不同;
5、数据源文件列数多于表的列数;
6、数据源文件列数少于表的列数。

加载读文件超时设置参数gbase_loader_read_timeout的使用说明

新的版本已经支持读文件超时的设置,可以将该参数上调,避免在较差网络环境下超时出现read operation timeout错误。

参数说明
参数名称:gbase_loader_read_timeout
默认值:300
最小值:0
最大值:UINT_MAX
参数单位:秒
参数说明:用于指定读取FTP/HTTP/SFTP文件的超时时间,如果填充一个数据块(8M)的时间超过此参数值,加载任务将报错停止。0表示永不超时。
配置方式:单机配置文件或者set变量方式。

集群以SQL方式加载数据,错误日志如何设置和查看

方法1:
参数:TRACE_PATH 用来指定本次加载过程中产生的错误数据和日志存放路径。缺省情况下,错误数据和溯源日志记录在加载机节点的/opt/gnode/log/gbase/loader_logs 下。

gbase> load data infile 'ftp://gbase:gbase@192.168.58.11/lineorder.txt' INTO TABLE ssbm.lineorder FIELDS TERMINATED BY '|' TRACE_PATH '/home/gbase/loadlog/loadlog';

产生报错的加载会有两个日志文件,一个trc文件,记录报错位置和报错原因;一个是err文件,记录错误数据。这两个文件的命名格式和8512一致,taskid开头。

方法2:
可以通过c3搜索:

$ cexec "ls -lrt /home/gbase/loadlog/loadlog" |grep  'taskid_库名_表名' 

集群直接加载hdfs文件namenode会不会成为瓶颈

问题描述:
8a集群支持hdfs文件的直接加载,在加载配置中,hdfs数据源是通过hadoop的namenode节点来获取数据的,因为hadoop只有两个namenode(standby方式),是否存在因为只有一个namenode节点提供数据而导致的加载瓶颈问题?
解决方案:
8a集群直接加载hdfs数据源时,url指定为hadoop的namenode节点,通过namenode节点获取待加载数据的uri路径,然后根据uri路径从各hadoop的datanode直接读取数据,而不用将数据汇总到nemenode节点再提供给8a集群加载。即,hadoop的namenode节点只提供hadoop中数据的元信息,不会造成加载时的网络瓶颈。