Получить запрос строки из проанализированного дерева ASTNode, используя HiveParser - PullRequest
0 голосов
/ 14 ноября 2018

Мой случай:
1. Используйте HiveParser для анализа строки SQL-запроса:
SELECT pageid, adid FROM pageAds LATERAL VIEW explode(adid_list) adTable AS adid
2. После анализа я получил дерево ASTNode, например:

nil
TOK_QUERY
  TOK_FROM
     TOK_LATERAL_VIEW
        TOK_SELECT
           TOK_SELEXPR
              TOK_FUNCTION
                 explode
                 TOK_TABLE_OR_COL
                    adid_list
              adid
              TOK_TABALIAS
                 adTable
        TOK_TABREF
           TOK_TABNAME
              pageAds
  TOK_INSERT
     TOK_DESTINATION
        TOK_DIR
           TOK_TMP_FILE
     TOK_SELECT
        TOK_SELEXPR
           TOK_TABLE_OR_COL
              pageid
        TOK_SELEXPR
           TOK_TABLE_OR_COL
              adid
<EOF>  

3.Затем мне нужно изменить tableName с pageAds на pageAds_uniqueSuffix.
4. Наконец, мне нужно снова отменить это дерево ASTNode для строкового запроса, и оно должно выглядеть следующим образом:
SELECT pageid, adid FROM pageAds_uniqueSuffix LATERAL VIEW explode(adid_list) adTable AS adid

==========================================
Я выполнил первые 2 шага, но на самом делезастрял на шаге 4.
Простая замена строки не поможет, потому что есть много ситуаций, которые не будут работать

...