生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

数据湖和 SQL 并不矛盾

  • 2020-01-08
  • 本文字数:1766 字

    阅读完需:约 6 分钟

数据湖和SQL并不矛盾

数据量的增加推动了技术的更新和范式的变化。与此同时,SQL 仍然是主流。随着数据的增长和复杂性的增加,SQL 比以往任何时候都更适合分析和转换数据湖中的数据。本文探讨了如何将 SQL 用于数据湖和新的数据生态系统。本文要点:随着数据的增长和复杂性的增加,SQL 比以往任何时候都更适合分析和转换数据湖中的数据。


本文最初发布于 TowardsDataScience,经原作者授权由 InfoQ 中文站翻译并分享。

记得 NoSQL 吗?

NoSQL 数据库的出现带来了巨大的可伸缩性和简单性。


如果我们必须高速处理大量的数据,我们会被告知 NoSQL 是唯一的出路。供应商一直在喋喋不休地讨论 SQL 和中间件代码之间的阻抗失配问题。


现在我们发现,大多数 NoSQL 供应商在花了几年时间来贬低连接之后,都引入了 SQL 层。一些供应商还引入了 SQL 方言,使情况变得更糟。


在 NoSQL 上引入这个 SQL 层似乎是出于对新一代数据库的恐惧,比如谷歌 Spanner,以及提供 JSON、XML 作为一等数据类型的数据库供应商。

Hadoop 呢?

Hadoop 为开发人员提供了 map-reduce 接口,这带来了一些巨大的进步,但同时也带来了很多问题(见 DeWitt 和 Stonebraker 的文章MapReduce:一次大倒退)。


在 Hadoop 上使用 map-reduce 处理数据还有很多需要改进的地方。性能调优、数据倾斜处理、获得最佳吞吐量,所有这些都需要太多的裸机代码更改。


人们尝试了多种受 SQL 启发的方法:


  • Apache Pig:类 SQL 语法、FOREACH 代替 FROM、GENERATE 代替 SELECT;

  • Hive: 用于 SQL-in-Hadoop 的类 MySQL 语法、将 SQL 转换为 map-reduce;

  • Drill、Impala、Presto 和 Pivotal 的 HAWQ:SQL-on-Hadoop,绕过 map-reduce;

  • Spark SQL:SQL on Spark;

  • Apache Phoenix:SQL on HBase;

  • Hadoop 作为已有 DB 的外部表:Oracle Big Data SQL、Teradata SQL-H。


经过多年的“大数据时代”,以及一些 Hadoop 的兼并和破产,我们现在看到了这些技术的幸存者。Hadoop 技术现在更多地存在云中,而不是在本地环境中。现在,在组织中已经不经常看到完整的 Cloudera 或 HortonWorks 栈了。相反,少数几种技术蓬勃发展,现在已广泛用于云数据栈。

数据湖上的 SQL

Stonebraker 很久以前就指出,数据库的性能问题和可伸缩性与 SQL 关系不大,而更多地与数据库本身的设计有关(NoSQL的讨论与SQL无关)。


SQL 的最大优点是它提供了熟悉性和分析数据的表达能力。SQL 的健壮性以关系代数和集合理论为基础。


对于数据湖,我们可以看到以下这些技术。


  • Hive 元数据存储是人们喜爱的数据目录。

  • 在 SQL 层,Presto 作为一个查询层脱颖而出,并在 Amazon Athena、Google Cloud DataProc、Qubole 中得到了广泛应用。

  • Spark 和 Spark SQL 的应用也很广泛。

  • Hadoop 文件系统(HDFS)用的不那么多了,云存储(Azure Blob、谷歌云存储、AWS S3)更受欢迎,CSV、Avro 和 Parquet 文件格式也更受欢迎了。

云数据仓库和数据湖

在原始文件系统上存储的经济性推动了数据湖的创建。SQL 被用于分析数据。


Amazon RedShift Spectrum 可以查询 S3 数据。


Snowflake DB 可以使用 VARIANT 列在数据库中存储 XML、JSON 或 ORC 数据,还可以使用外部表指向 S3 中的数据。


外部表还支持谷歌 BigQuery 和 Azure SQL 数据仓库。

SQL 和 ELT (提取 加载 转换)

数据处理的 ELT(提取 加载 转换)范式将数据转换步骤放在最后。首先从源系统提取数据并将其加载到数据库中。


旧的 ETL 方法 RBAR(逐行处理)与关系数据库执行的基于集合的处理形成了直接的对比,而基于集合的处理构成了 SQL 的基础。


ELT 中,我们现在从源数据库中提取数据并将其放入数据湖中。


SQL 转换在云数据仓库或使用 Presto 完成,并将转换后的数据加载到目标表。


通过 GoldenGate、AWS DMS,或者使用 Workato/Jitterbit/StitchData 等工具或 Kafka 等健壮的事件管道,一点点地向数据湖或数据仓库输送数据。将源系统和加载区域之间的转换最小化。然后使用 SQL 将这些数据转换并加载到仓库和分析层。


ELT 工具链使用 DAG(有向无环图)工具,如 Apache AirFlow 和无服务器函数,而不是旧的 ETL 工具链中类似 AutoSys 这样的调度器。


DBT 是在转换领域流行的另一个工具。像 FiveTran 和 Matillion 这样的云数据处理工具也使用 SQL 和 ELT。Domo 序列化 SQL 来创建转换管道。Looker 基于 LookML 生成 SQL。


原文链接


https://towardsdatascience.com/data-lakes-and-sql-49084512dd70


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-01-08 08:002195
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 491.9 次阅读, 收获喜欢 1966 次。

关注

评论

发布
暂无评论
发现更多内容

并发编程专题三-JAVA线程的并发工具类,面试要掌握这几个关键点

Java 程序员 后端

微服务架构陷阱:过渡设计和设计不足,2021年Java开发前景如何

Java 程序员 后端

必知必会JVM四-垃圾收集器介绍,linux驱动开发入门与实践

Java 程序员 后端

怎样成为全栈工程师(Full Stack Developer)(1),已拿offer

Java 程序员 后端

恕我直言,我怀疑你们并不会用 Java 枚举,java分布式架构面试题

Java 程序员 后端

懵逼!阿里一面就被虐了,幸获内推华为技术四面,kafka高性能原理

Java 程序员 后端

应“云”而生的 Java 框架,带你手撸红黑树

Java 程序员 后端

开发多年put、get、resize不知道,springcloud视频讲解

Java 程序员 后端

很全面!每天一分享互联网大厂Java面试真题,java菜鸟教程实例

Java 程序员 后端

彻底理解coookie、session、token,mybatis的动态sql执行原理

Java 程序员 后端

强哥说Java--Java 方法,kafka视频

Java 程序员 后端

微服务网关与用户身份识别,JWT+Spring Security进行网关安全认证

Java 程序员 后端

怎么可能?面试会被Spring难住?Spring框架从入门到精通

Java 程序员 后端

怎么用Redis分布式锁才能确保万无一失?,15个经典面试问题及答案

Java 程序员 后端

并发编程专题四-原子操作和显示锁,java面试刷题

Java 程序员 后端

强势出击!21天肝完这份字节面试题后直接斩获字节offer

Java 程序员 后端

强哥说Java--Java 变量,java面试逻辑思维题及答案

Java 程序员 后端

总结历年各大厂面试官传授的面试经验+阿里P8级架构师整理的Java高频核心知识点

Java 程序员 后端

意犹未尽的一篇Nginx原理详解,面试官看了都忍不住点赞(1)

Java 程序员 后端

成为架构师之前,你一定要懂的-CAP-定理,Java程序员必备书籍

Java 程序员 后端

开门见山的问MySQL:InnoDB一棵B+树可以存放多少行数据

Java 程序员 后端

快人一步!阿里爆款Java性能调优手册,源码,如何做到操作系统和并发同步结合

Java 程序员 后端

快速上手Apache,java递归求阶乘原理

Java 程序员 后端

总是说spring难学?看完这些spring的注解及其解释,对你来说就是So-easy!

Java 程序员 后端

意犹未尽的一篇Nginx原理详解,面试官看了都忍不住点赞

Java 程序员 后端

应届生想要找到一份Java开发的工作,需要达到什么水平?

Java 程序员 后端

快速鸟瞰并发编程,-呕心沥血整理的架构技术【2】,分层展示的架构图

Java 程序员 后端

想进阿里、京东?这些多线程并发的技术要点你需要知道,Java程序员怎么优雅迈过30K+这道坎

Java 程序员 后端

微服务你得知道这些!从核心组件到远程调用方式以及HTTP通信方法

Java 程序员 后端

快醒醒吧!互联网大厂面试必问的JVM底层原理,你还搞不清楚

Java 程序员 后端

怎样成为全栈工程师(Full Stack Developer),sqlproformysql使用教程

Java 程序员 后端

数据湖和SQL并不矛盾_AI&大模型_Shirish Joshi_InfoQ精选文章