我知道我可以使用explain extended command获取AST。我的问题是,如何使用Java API获得相同的功能。 我的目标是获取有关查询的以下数据:
我知道我可以使用Regex直接从查询字符串获取数据,但我想使用Java API。 你还有其他想法怎么做吗?
答案 0 :(得分:0)
您可以使用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>