Java API写入DFS表时报错,Can only append a table to a DFS/disk table

List<Vector> cols = new ArrayList<Vector>() {
		};
// 省略构建cols过程 conn.run(String.format("tableInsert{loadTable('%s','stk_tick')}","dfs://runc_test"),cols);
请先 登录 后评论

1 个回答

Yingnan Wang

首先这个错误是server端返回的错误,意思是插入DFS表时,参数也只能是一个table类型的对象;

其次使用API和server交互时,需要考虑到类型的映射关系,server的table类型对应的是Java API中的BasicTable类;

public BasicTable(final List<String> colNames, final List<Vector> cols);

使用上述构造方法,构建一个BasicTable作为参数即可。

实际上这里调用conn.run(script,args),是把脚本通过序列化的方式传输给server执行,因此如果使用这种方式执行数据插入,使用的是server内置函数tableInsert,和API层无关,我们需要处理的是根据server函数的使用语法,构建正确的参数args即可,那么不同的地方在于各个编程语言上数据类型的映射关系不同,具体的对应关系可以查阅各个API的readme。

请先 登录 后评论