我这样写怎么不起作用,依然报错:ODPS-0130071:[0,0] Semantic analysis exception - VARCHAR(4) type is not enabled in current mode。 odps.setDefaultProject("SCRCU_SOR_DEV"); String sql = "select * from ncb_inklshx0103;"; HashMap<String, String> hints = new LinkedHashMap<String, String>(); hints.put("set odps.sql.type.system.odps2", "true"); hints.put("setproject odps.sql.type.system.odps2", "true"); Instance i; try { // i = SQLTask.run(odps, sql); i = SQLTask.run(odps, odps.getDefaultProject(), sql, hints, null); i.waitForSuccess(); List records = SQLTask.getResult(i); for(Record r:records){ System.out.println(r.get(0).toString()); } } catch (OdpsException e) { e.printStackTrace(); }
使用DataWorks或MaxCompute客户端提交SQL时,通常需要设置SQL的Flag。例如,Session级别使用MaxCompute新数据类型时,需要在涉及新数据类型的SQL前加设置Flag的语句set odps.sql.type.system.odps2=true;。
使用Java SDK提交SQL时,不能简单地把Set Flag语句直接放到SQL查询中执行。设置Flag的正确方式如下。
String sql ="SELECT..."; HashMap<String, String> hints = new LinkedHashMap<String, String>(); hints.put("SQL flag name, e.g. odps.sql.type.system.odps2", "SQL flag value"); hints.put("SQL flag name, e.g. odps.sql.type.system.odps2", "SQL flag value"); hints.put("SQL flag name, e.g. odps.sql.type.system.odps2", "SQL flag value"); Instance i = SQLTask.run(odps, odps.getDefaultProject(), sql, hints, null); i.waitForSuccess();
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。