【问题标题】:How to convert a hive string query into abstract syntax tree using Java API?如何使用 Java API 将配置单元字符串查询转换为抽象语法树?
【发布时间】:2015-12-28 17:45:09
【问题描述】:

我知道我可以使用explain extended command 获取 AST。我的问题是,如何使用 Java API 获得相同的结果。 我的目标是获取有关查询的以下数据:

  • 数据库源和目标(如果应用)。
  • 表源和目标(如果应用)。
  • 查询中涉及的字段。

我知道我可以使用正则表达式直接从查询字符串中获取以上数据,但我想使用 Java API。 您还有其他想法吗?

【问题讨论】:

    标签: java regex hadoop hive abstract-syntax-tree


    【解决方案1】:

    您可以为此使用 Hive Parser。它只是接受查询并将其转换为类似于解释命令的 AST。这是一个简单的例子:

    ParseDriver pd = new ParseDriver();
    ASTNode tree = pd.parse("Select * from table1");
    System.out.println(tree.dump());
    

    输出将是

     nil
       TOK_QUERY
          TOK_FROM
             TOK_TABREF
                TOK_TABNAME
                   table1
          TOK_INSERT
             TOK_DESTINATION
                TOK_DIR
                   TOK_TMP_FILE
             TOK_SELECT
                TOK_SELEXPR
                   TOK_ALLCOLREF
       <EOF>
    

    【讨论】:

    • 我忘记了这个问题,但是是的,你是对的。谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 2016-10-01
    • 1970-01-01
    • 2013-10-22
    相关资源
    最近更新 更多