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重写父类中的特定行   java Apache Commons CLI订购帮助选项?   java如何将数据添加到网格视图   java如何在Apache Camel批处理后移动文件?   java如何为日期范围的between子句编写hql查询?   雅加达ee开始Java编程,我应该从哪里开始?   排序Java8+流:检查我的objectinstances的两个字段的列表顺序是否正确   java如何将json转换为Map<String,Object>确保整数为整数   java不能在Spring数据JPA批处理过程中创建TransactionException   java损坏的PDF文件从FTP下载到使用Apache Common Net的设备   java无法使用Spring批处理和Wso2为XML架构命名空间找到Spring NamespaceHandler   java Android ImageView未显示在SherlockFragment中   Maven在构建时出错=无法识别Java路径   java如何使用批处理文件调用关闭处理程序?   java admob广告横幅重叠我的游戏屏幕安卓