如何使用 Java API 将配置单元字符串查询转换为抽象语法树?

How to convert a hive string query into abstract syntax tree using Java API?

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

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

您可以为此使用 Hive Parser。它只是接受查询并将其转换为类似于 explain 命令的 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>