当我谈论数据湖时,在谈些什么
最近由于工作原因,又重新接触了一番数据湖。如果按照英文直译,数据湖(DataLake)是一个非常早的概念,在 Data Lake Wiki1里引用的最早一篇文章是Pentaho 的创始人兼 CTO James Dixon 发表的这篇博客:《Pentaho, Hadoop, and Data Lakes》2,发表在 2010 年。
而最近两年数据湖的文章,明显多了起来。这篇文章记录下我对数据湖的理解。
1. 流批一体
提到数据湖,就不得不说流批一体。刚接触大数据的时候,常听到的一个名词就是「流批一体」。背景可以用这样一张图表示:
最传统的数仓架构,其实也是最简单、最经典的。
随着数据量变大、时效性需求不同,逐步衍生出了后续的几种架构,当然,链路也更加复杂。复杂的链路自身,在...
Flink - Row 里使用字符串的 ParseException
1. Row 里显式使用字符串的问题
在 20 年初最开始使用 Flink 1.9.1 时,有一些看似普通的 SQL 也会执行失败。比如下面这个:
package cn.izualzhy
import org.apache.flink.streaming.api.scala._
import org.apache.flink.table.api.bridge.scala.StreamTableEnvironment
object LiteralInRowTest extends App {
val env = StreamExecutionEnvironment.createLocalEnvironment(1)
val tEnv = StreamTableEnviro...
Calcite-5:SQL解析
C 代码编译时要经过词法分析、语法分析:比如提取关键字(int/for/#define, ETC.),判断语法是否正确。
类似的,SQL 字符串解析为SqlNode也需要词法分析。
在 Calcite 中,这一过程借助于 javacc 完成。预配置的语法文件里,包含了需要的关键字以及对应的代码模板。随着解析字符串匹配到关键字,一步步生成需要的代码。
这篇笔记主要记录 javacc 以及 Calcite 里对应的源码分析。
1. javacc
javacc1是一个 java 版本的语法解析库,我们可以用来定义自己的关键字,生成 java 代码。
举个例子,我们定义一个自解释的Explain关键字,输入形如:
EXPLAIN javacc;
预期的输出是打印参数(java...
235 post articles, 30 pages.