SQL磁盘
dask-sql的Python项目详细描述
达斯克sql
dask-sql
在dask
的顶部添加一个SQL查询层。
这允许您使用
常见的SQL操作。在
这些查询将作为正常的dask操作运行,这些操作可以分布在dask集群中。 因此,这个项目的目标类似于sparksql/Hive/Drill/。。。适用于Hadoop领域,但功能更少(到目前为止…)。 这个项目的一些想法来自伟大的blazingSQL项目。在
在documentation中阅读更多内容。在
您可以使用docker命令快速尝试dask-sql
docker run --rm -it -p 8080:8080 nbraun/dask-sql
请参阅本页末尾的SQL server中的信息。在
注释
dask-sql
当前正在开发中,到目前为止还不能理解所有的SQL命令。
我们正在积极寻求反馈和改进!在
示例
我们以来自dask.datasets
的timeseries随机数据为例:
安装
dask-sql
可以通过conda
(首选)或pip
-或在开发环境中安装。在
使用conda
创建一个新的conda环境或使用已经存在的环境:
conda create -n dask-sql
conda activate dask-sql
从conda-forge
通道安装包:
conda install dask-sql -c conda-forge
使用pip
dask-sql
需要Java来解析SQL查询。
请确保您有一个正在运行的java安装,版本为>;=8。在
要测试是否正确安装和设置了Java,请运行
$ java -version
openjdk version "1.8.0_152-release"
OpenJDK Runtime Environment (build 1.8.0_152-release-1056-b12)
OpenJDK 64-Bit Server VM (build 25.152-b12, mixed mode)
安装Java之后,可以使用
pip install dask-sql
用于开发
如果您想要最新的(未发布的)dask-sql
版本,或者您计划在dask-sql
上进行开发,您也可以从源代码安装包。在
git clone https://github.com/nils-braun/dask-sql.git
创建新的conda环境并安装开发环境:
conda create -n dask-sql --file conda.yaml -c conda-forge
之后,您可以在开发模式下安装包
pip install -e .
这也将编译Java类。如果Java代码有更改,则需要使用重新运行此编译
python setup.py java
测试
您可以使用运行测试(安装后)
pytest tests
它是如何工作的?在
在核心,dask-sql
做了两件事:
- 使用Apache Calcite将SQL查询转换为关系代数,关系代数被指定为java对象树-类似于许多其他SQL引擎(Hive、Flink、…)
- 将java对象的查询描述转换为dask API调用(并执行它们)——返回一个dask数据帧。在
第一步,apachecalcite需要知道dask数据帧的列和类型,因此在planner
中定义了一些存储dask数据帧信息的java类。
在转换到关系代数之后(使用RelationalAlgebraGenerator.getRelationalAlgebra
),在dask_sql.physical
中定义的python方法通过逐个转换关系代数的每一部分,将其转换为一个物理的dask执行计划。在
SQL服务器
dask-sql
附带了一个针对SQL server的小型测试实现。
我们不再重建完整的ODBC驱动程序,而是重用presto wire protocol。
到目前为止,它只是开发的一个开始,缺少一些重要的概念,比如
身份验证。在
您可以通过运行
python scripts/startup_script.py
或者使用创建的docker图像
docker run --rm -it -p 8080:8080 nbraun/dask-sql
在一个终端。这将启动端口8080上的服务器(默认情况下) 对于任何presto客户机来说,这看起来都类似于一个普通的presto数据库。在
例如,可以使用默认值presto client来测试:
presto --server localhost:8080
现在可以启动简单的SQL查询(因为默认情况下不加载任何数据):
=> SELECT 1 + 1;
EXPR$0
--------
2
(1 row)
您可以在documentation中找到更多信息。在
- 项目
标签: