Pull-based vs Push-based Query Engine
数据库的查询引擎[Query Engines]有两种查询方式,Push-based和Pull-based。
数据库的查询引擎[Query Engines]有两种查询方式,Push-based和Pull-based。
本文记录了部署Hadoop的具体步骤,因为感觉以前每次部署都是Google一下,这回记录一下。这里使用Hadoop-2.10.2版本的standalone mode
作为例子。
本文介绍一个python常用的装饰器Property,其主要作用就是解决python class的属性的setter和getter,和类属性保护的问题。
在开发过程中,编译部署都是无法避免的步骤,但是在调试时,需要重复地进行编译部署,如果这个过程复杂,那就更加耗时费力。重复劳作是枯燥的,所以大多数情况下,我们可以使用expect来进行自动化交互过程,从而自动化整个编译和部署过程。
Spark 2.0引入了更高级别的新的流处理API,叫做Structured Streaming[结构化流]。本文通过Spark的源代码来理解具体的Structured Streaming的执行过程。本文使用的是Spark 2.4.0的源代码。Structured Streaming相关的源代码存在于sql
文件夹中。
如前文所述,Docker是一个轻量级的容器,将应用程序,第三方库,数据文件和环境放在一起使用户可以最大程度使用宿主机的硬件。Docker容器是平台无关[platform-agnostic]和硬件无关[hardware-agnostic],这说明Docker对于一些通用的硬件已经有很好的支持,但是当使用特殊的硬件,如NVIDIA GPUs时,这就产生了一个问题,这些硬件需要内核模块和用户级库来操作,也就是我们常说的驱动程序。
Docker镜像是由多个文件系统[只读层]叠加而成。当我们启动一个容器的时候,Docker会加载只读镜像层并在其上[镜像栈顶部]添加一个读写层。如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,然后在读写层进行修改,但是文件的只读版本仍然存在于只读层,只是已经被读写层中该文件的副本所隐藏。当删除Docker容器,并通过该镜像重新启动时,之前在读写层的更改将会丢失。所以默认情况下,数据在Docker运行时无法进行持久化操作。
本文简要介绍了个人常用的docker命令