Guery is a pure-go implementation of distributed SQL query engine for big data (like Presto). It is composed of one master and many agents and supports to query vast amounts of data using distributed queries.
This project is still a work in progress.
- Support more SQL statement
- Improve performance
- Improve error control
- Add ut and regression test
- Add Wiki
- ...
This project is in progress and a lot of work need to do. If you are interested in it, please give me your hands and anything is welcome! I also list some issues. If you want to improve something, please open an issue to let others know :)
- Datasource: hive
- FileSystem: local/hdfs/s3
- FileType: csv/parquet/orc
- DataType: bool/int32/int64/float32/float64/string/date/timestamp
Web UI is the web interface of a Guery cluster to monitor and inspect the task executions in a web browser. It provides following modules:
Task information/Agent information & management/Execute plan
- build guery
cd $GOPATH/src/github.com/xitongsys/guery; make build
- run master
./guery master --address 127.0.0.1:1111 --config ./config.json >> m.log &
- run agent
./guery agent --master 127.0.0.1:1111 --config ./config.json >> e.log &
- web ui
http://127.0.0.1:1111
cd $GOPATH/src/github.com/xitongsys/guery
make run
curl -XPOST -d"sql=select * from test.test.csv where var1=1" 127.0.0.1:1111/query
open web browser: http://127.0.0.1:1111
I did a simple and not strict performance test:
env: 1 master and 2 workers(8 CPU, 16G RAM)
table: hive, parquet
sql type | guery | presto | hive |
---|---|---|---|
select | 14.52 | 6.14 | 19.35 |
join | 37.67 | 19.16 | 110.52 |
aggregate | 9.14 | 4.29 | 27.04 |
group by | 26.81 | 4.33 | 26.79 |