利用hive原始碼解析sql查了哪些表哪些字段

2022-03-20 19:35:28 字數 687 閱讀 7912

在hiveserver2中使用了org.apache.hadoop.hive.ql.parse.basesemanticanalyzer對抽象語法樹(ast)進行語義分析,分析的過程可以得出hive查詢的表及其字段

於是我利用相關的類去做測試:

}最後可以根據columnaccessinfo去得到查詢的表及其字段。

但這麼做不太滿足我們的需求,比如說下面這句sql,我想要的結果是查詢了test.test1表的name欄位,但是它連id欄位也拿出來了。

select * from (select name from test.test1 where id = 1) a
先記錄一下,之後如果找到原始碼有解決方法的話再更新

hive原始碼解析之語法解析

hive語法解析器是根據 上次分享的 詞法分析 生成的語法樹為基礎,進行語法解析。根據語法token的情況實現了五個具體的語法解析器。在你生成語法器的時候,semanticanalyze ctory分別針對不同的情況生成對應的某個語法器,如下 semanticanalyze ctory類 現在有五個...

hive原始碼解析之hive執行過程

儲存到相簿 2014 12 26 23 04 上傳 1.入口 bin cli.sh 呼叫clidriver類進行初始化過程 處理 e,f,h等資訊,如果是 h,列印提示資訊,並退出 讀取hive的配置檔案,設定hiveconf 建立乙個控制台,進入互動模式 2.在互動方式下,讀取每乙個輸命令列,直到...

hive原始碼解析(1)之hive執行過程

1.入口 bin cli.sh 呼叫clidriver類進行初始化過程 處理 e,f,h等資訊,如果是 h,列印提示資訊,並退出 讀取hive的配置檔案,設定hiveconf 建立乙個控制台,進入互動模式 2.在互動方式下,讀取每乙個輸命令列,直到 為止,然後提交給processline cmd 方...