谁能告诉我如何转换蜂房查询到抽象语法树? 例如:选择从订单*其中CUST_NUM = 100; 我怎么能转换成AST呢? 怎么能我这个AST转换成QB树? 请帮忙。 提前致谢。
Answer 1:
您可以使用EXPLAIN
与命令EXTENDED
。 假设我有一个称为表demo
了列n1
,再签发解释会给我这样的:
hive> EXPLAIN EXTENDED select * from demo where n1='aaa';
OK
ABSTRACT SYNTAX TREE:
(TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME demo))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (= (TOK_TABLE_OR_COL n1) 'aaa'))))
STAGE DEPENDENCIES:
Stage-1 is a root stage
Stage-0 is a root stage
STAGE PLANS:
Stage: Stage-1
Map Reduce
Alias -> Map Operator Tree:
demo
TableScan
alias: demo
GatherStats: false
Filter Operator
isSamplingPred: false
predicate:
expr: (n1 = 'aaa')
type: boolean
Select Operator
expressions:
expr: n1
type: string
expr: n2
type: string
outputColumnNames: _col0, _col1
File Output Operator
compressed: false
GlobalTableId: 0
directory: hdfs://localhost:9000/tmp/hive-apache/hive_2013-06-13_19-55-21_578_6086176948010779575/-ext-10001
NumFilesPerFileSink: 1
Stats Publishing Key Prefix: hdfs://localhost:9000/tmp/hive-apache/hive_2013-06-13_19-55-21_578_6086176948010779575/-ext-10001/
table:
input format: org.apache.hadoop.mapred.TextInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
properties:
columns _col0,_col1
columns.types string:string
escape.delim \
serialization.format 1
TotalFiles: 1
GatherStats: false
MultiFileSpray: false
Needs Tagging: false
Path -> Alias:
hdfs://localhost:9000/user/hive/warehouse/demo [demo]
Path -> Partition:
hdfs://localhost:9000/user/hive/warehouse/demo
Partition
base file name: demo
input format: org.apache.hadoop.mapred.TextInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
properties:
bucket_count -1
columns n1,n2
columns.types string:string
field.delim ,
file.inputformat org.apache.hadoop.mapred.TextInputFormat
file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
location hdfs://localhost:9000/user/hive/warehouse/demo
name default.demo
serialization.ddl struct demo { string n1, string n2}
serialization.format ,
serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
transient_lastDdlTime 1370932655
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
input format: org.apache.hadoop.mapred.TextInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
properties:
bucket_count -1
columns n1,n2
columns.types string:string
field.delim ,
file.inputformat org.apache.hadoop.mapred.TextInputFormat
file.outputformat org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
location hdfs://localhost:9000/user/hive/warehouse/demo
name default.demo
serialization.ddl struct demo { string n1, string n2}
serialization.format ,
serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
transient_lastDdlTime 1370932655
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
name: default.demo
name: default.demo
Stage: Stage-0
Fetch Operator
limit: -1
Time taken: 5.316 seconds
文章来源: how to convert a hive query into abstract syntax tree?