點選右上方,關注開源中國OSC頭條号,擷取最新技術資訊
QSQL是以SQL進行單一、混合查詢的一款産品。QSQL支援标準SQL語言(SQL-2003);QSQL支援查詢關系型資料庫、NoSQL式資料庫、原生不支援SQL查詢的存儲(如ES、Druid),及借助中間計算引擎實作混合查詢。QSQL最大的特點是獨立于計算引擎、存儲引擎本身,如此使用者隻需要關注于QSQL文法以及資料本身,就可完成資料計算、統計以及分析。
架構設計
QSQL包含三層結構:
- 文法解析層:負責SQL語句的解析、校驗、優化、混算SQL的切分以及最終生成Query Plan;
- 計算引擎層:負責Query Plan路由到具體的執行計劃中,将Query Plan解釋為具體的執行引擎可識别的語言;
- 資料存儲層:負責資料的提取、存儲;
編譯&部署
1 編譯環境依賴
- java >= 1.8
- scala >= 2.11
- maven >= 3.3
2 編譯步驟
在源碼根目錄下,執行:
mvn -DskipTests clean package
編譯成功後執行:
ls ./target/
在./target/目錄下,會生成釋出包 qsql-0.5.tar.gz。
3 部署環境依賴
- CentOS 6.2
- java >= 1.8
- scala >= 2.11
- spark >= 2.2
- [可選] 目前QSQL支援的存儲引擎MySQL、Elasticsearch、Hive、Druid
4 用戶端部署
在用戶端解壓縮釋出包 qsql-0.5.tar.gz
tar -zxvf ./qsql-0.5.tar.gz
建立軟鍊
ln -s qsql-0.5/ qsql
該釋出包解壓後的主要目錄結構如下:
- bin:腳本目錄
- conf:配置檔案
- data:存放測試資料
- lib:依賴jar包
- metastore:中繼資料管理
在QSQL釋出包$QSQL_HOME/conf目錄中,分别配置如下檔案:
- base-env.sh:設定相關環境變量,如:
- JAVA_HOME
- SPARK_HOME
- QSQL_CLUSTER_URL
- QSQL_HDFS_TMP
- qsql-runner.properties:設定系統參數
- log4j.properties:設定日志級别
運作示例
QSQL Shell
./bin/qsql -e "select 1"
詳情:English|中文
示例程式
QSQL附帶了示例目錄中的幾個示例程式。要運作其中一個,使用./run-example [params]。例如:
記憶體表資料:
./bin/run-example com.qihoo.qsql.CsvScanExample
Hive join MySQL:
./bin/run-example com.qihoo.qsql.CsvJoinWithEsExample
注意
./run-example
運作混算,請確定目前用戶端存在Spark、Hive、MySQL環境。并且将Hive與MySQL的連接配接資訊添加到中繼資料管理中。
請點選下方“了解更多”檢視完整文章。
↓↓↓