开发者社区> 问答> 正文

设置SQL的Flag

我这样写怎么不起作用,依然报错: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(); }

展开
收起
游客rocxuwvx2tlye 2020-04-15 16:16:42 1346 0
1 条回答
写回答
取消 提交回答
  • 使用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();

    2020-04-15 19:23:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载