Java实现HiveSQL Parser


import com.xxxx.model.SQLParserResult;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hive.ql.parse.*;
import java.util.*;

/**
 * @author yangxin-ryan
 * HiveParse工具类
 * 根据解析SQL语句,解析出其中的数据库名,表名,具体操作。
 * 处理:获取SELECT操作中的表和列的相关操作。其他操作这判断到表级别。
 * 实现思路:对AST深度优先遍历,遇到操作的token则判断当前的操作,
 * 遇到TOK_TAB或TOK_TABREF则判断出当前操作的表,遇到子句则压栈当前处理,处理子句。
 * 子句处理完,栈弹出。
 */
public class HiveParseUtil {
    private static Log LOG = LogFactory.getLog(HiveParseUtil.class);
    private static final String UNKNOWN = "UNKNOWN";
    private Map tableAlias = new HashMap<>();
    private Map cols = new TreeMap<>();
    private Map colAlais = new TreeMap<>();
    private Set tableOpers = new HashSet<>();
    private Set tables = new HashSet<>();
    private Stack tableNameStack = new Stack<>();

你可能感兴趣的:(Java,大数据挖掘与大数据应用案例)