SQL磁盘

dask-sql的Python项目详细描述


达斯克sql

CondaPyPIGitHub Workflow StatusRead the DocsCodecovGitHubBinder

dask-sqldask的顶部添加一个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随机数据为例:

^{pr2}$

安装

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中找到更多信息。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
我们可以使用java for loop with switch语句。。?   java如何从具有循环关系的数据集生成树?   使用s:mvcUrl标记时java Spring启动问题   javascript Wicket调色板水平滚动条在firefox中不显示   java如何清理Maven插件绑定?   java将文件从设备发送到计算机不起作用(文件被破坏)   Java GPU编程的性能   java字符串标记器问题   连接Java LDAP断开连接   java Android GridView将无法确定正确的位置   java AlarmManager在指定时间未显示toast消息   MVC中的java测试外观|断言返回类型   logcat上的java Android运行时错误   java Building Workspace在Eclipse中遇到错误   堆栈溢出尾部递归遗传算法抛出“awteventque0”java。StackOverflowerr语言   java ArrayOutOfBounds测试代码不工作   java有没有像Moodle这样流行的课程管理系统?   java如何从jsp获取xml文件作为响应