数据工程每月注释- 2021年9月

在大多数国家,学生在9月开始学习。作为数据工程师,让我们跟随他们的脚步,学习一些新的东西吧!我Pasha Finkelshteyn.,我将为您介绍这个月的新闻。我将介绍我对发展的印象,并强调来自更广泛的社区的想法。如果你认为我错过了什么有价值的东西,告诉我推特并建议一个主题,链接,或任何其他东西。

消息

很多工程都是关于学习新事物并保持手指对新技术的脉冲。以下是数据工程中发生的事情。

Zingg 0.3.0- - - - - -MDM(主数据管理)很棘手。您有多个数据来源,您必须定义什么是真实的,而不是。您也必须以某种方式确定记录是否属于同一个人。是蒂姆伯顿,蒂莫西伯顿和T. W.Burton同一个人吗?Zingg是一种与Spark和尝试自动回答这个问题的工具,而无需任务的二次复杂性!

Kafka 3.0.0.从Kafka 3.0.0-rc0到3.0.0的发布,Apache软件基金会用了不到一个月的时间。它只涉及10次提交和小的修复,这是一个令人难以置信的迹象,他们的软件质量。

骆驼K 1.6.0- 这不是骆驼K的巨大释放,但我只是想分享这个令人敬畏的项目,这在我的泡沫里面并不广泛。很多幸福的客户都意识到了Apache骆驼,这是一个集成框架,可以将几乎所有东西连接到所有东西。说实话,它非常麻烦,每个实例都需要单独的安装和XML配置。Camel K将Camel的力量与Kubernetes的本土经验相结合。这个特定的版本允许扩展kameletBindings.

Hudi 0.9这个版本增加了一些巨大的东西:Spark DDL和DML支持(实验性的)。当你阅读这篇文章时,Hudi和Hive之间的界限正在慢慢消失!此外,Hudi表现在被注册为Spark数据源表,这意味着不再需要Hive回退从Spark中查找表。

德鲁伊0.22.0Apache Druid据称是与ClickHouse竞争的高性能分析数据库。一个有趣的细微差别:它有一个非常好的用户界面,允许用户构建图表和交互更改查询!这个版本带来了400多个新特性,但我最喜欢的是SQL中的数组聚合函数。

PostgreSQL 14.-有时我忘了,传统的关系数据库在数据工程师的生活中扮演着重要的角色。当然,PostgreSQL是最流行的数据库之一。这个版本带来了更多对复杂分析查询很重要的特性。他们说“在并行查询、高并发工作负载、分区表、逻辑复制和真空处理等方面都有了性能改进”。

未来改进

数据工程技术每天都在发展。本节是关于技术更新的技术更新,您可能希望保持雷达。

火花的大规模编译时间改进-在一些罕见的情况下,编译带有深度嵌套case-when语句的查询可能会花费很多时间,有时甚至超过24小时!之所以会出现这种情况,是因为PushDownPredicate一个接一个地向下推规则,在巨大的case-when语句中可能有数千条规则。这种优化将把这种情况下所需的时间从几小时减少到几分钟。

添加Broker Count Metric到Kafka-我从来没有想过,但这里有一个有趣的观察:如果一个Kafka broker是活着的,这并不自动意味着它是健康的和完整的功能。由于DNS解析失败,它甚至可能无法发送指标。该KIP旨在添加一个新指标,即代理总数,以便管理员可以将正常和不正常的代理数量与代理总数进行比较。

改进纱线注册表DNS服务器QPS—在大规模Hadoop集群中,可能会有大量的DNS查询。事实证明,在YARN Registry的DNS服务器实现中,解析速度是次优的。在相关问题上,来自naver.com提高了分辨率吞吐量超过9次!

NiFi的运营分析框架-在低代码的工具中,管理和开发一样简单总是有益的。NiFi将在这个方向上迈出新的一步,在NiFi内部实现带有集群行为预测的操作分析!

文章

本节是关于灵感的。以下是一些伟大的文章和帖子,可以帮助我们所有在数据工程中工作的其他人,团队和公司的经验。

使用Apache Flink, Kafka和Pinot实时一次Ad事件处理- 作为分布式系统的专家,当我读或听到“完全一员”时,我总是非常持怀疑态度。但是,我不太夸张地认为我比超级工程师更经验。他们说他们知道如何为事件流提供完全 - 一次交付,这真的听起来像流处理的圣杯。听起来令人难以置信,对吧?查看文章了解更多详情!

使用dbt清单自动生成一个气流DAG- DBT通常被用作一种工具,或多或少地用于声明性地描述数据及其转换的构建块。但是一般来说,运行dbt run命令并说明解决方案已经准备好生产是不够的。这篇文章描述了如何从dbt清单生成气流dag。气流几乎是万能的!

将数据视为Adevinta的产品- 有数据还不够!人们应该能够访问,更重要的是,使用不敏感的数据或隐私角度。在本文中,Adevinta描述了他们实施的几种实践,以使数据更具可访问和有用。

为什么你应该尝试一些其他的东西,而不是气流的数据管道编排-如果你问我在工作中应该使用哪种管弦乐,我会回答“这要看情况,但可能是气流”。其他人有不同的观点,得到各种各样的观点是很好的!

工具

askgit.—SQL是许多数据工程师的母语。另一方面,git日志非常复杂:它的文档占去了时间许多页面!选择正确的方式构建日志后,需要使用bash magic提取数据。例如,如果我想在Apache Spark的Kotlin API中找到每个提交者的第一个提交,该怎么办?

使用Bash,它看起来像这样:

声明 - 委托人ifs =';'虽然读-RA项目;do [“$ {提交者[$ {intom [1]}] + abc}”||提交者[$ {item [1]}] = $ {item [0]} DONE <<(git log -full-hardent --reverse“--format = format:%at;%ae”)for“$ {!提交者[@]}“;do printf“%s:\ t%s \ n”“$ x”$(日期-d @ $ {提交者[$ x]})“完毕

这样的脚本的输出不是特别可读:

vitaly.khudobakhshov@gmail.com: 209830年太阳2019年11月17日10:05:08是MSK + plastic-karma@users.noreply.github.com: 9月10日星期四08:58:37是MSK 2020 asm0dey@jetbrains.com:太阳2019年11月17日下午04:45:37 MSK nonpool@163.com:清华2021年7月15日12:33:52是MSK 49699333 + dependabot (bot) @users.noreply.github.com:星期五2020年6月19上午09:35:47 MSK j.j.r.rensen@student.tue.nl:星期二上午12月1 01:27:32 MSK 2020 ugai@jp.fujitsu.com: 8月21日星期五上午10:16:15 MSK 2020 pavel.finkelshteyn@jetbrains.com: 3月20日星期五下午09:39:55 MSK 2020 felix.engl@hotmail.com: 10月8日星期四上午11:23:11 MSK 2020 gunnar.schulze@gmail.com: 9月22日星期二上午10:04:43 MSK 2020 kafooster@gmail.com:Tue Jun 2 09:11:19 PM MSK 2020 pavel.finkelshtein@gmail.com: Sat Jun 6 02:04:55 AM MSK 2020 408698+cra@users.noreply.github.com: Mon Jun 1 05:56:17 PM MSK 2020

下面是askgit命令的样子:

SELECT author_email AS email, min(author_when) AS date FROM commit GROUP BY author_email ORDER BY date

输出结果会很好:

+---------------------------------------------------+---------------------------+ | 电子邮件|日期  | +---------------------------------------------------+---------------------------+ | vitaly.khudobakhshov@gmail.com | 2019 - 11 - 17 t10:05:08 + 03:00  | +---------------------------------------------------+---------------------------+ | asm0dey@jetbrains.com| 2019 - 11 - 17 t16:45:37 + 03:00  | +---------------------------------------------------+---------------------------+ | 2020 - 03 - 20 - t18:39:55z pavel.finkelshteyn@jetbrains.com |  | +---------------------------------------------------+---------------------------+ | 408698 + cra@users.noreply.github.com | 2020 - 06 - 01 - t17:56:17 + 03:00 |+---------------------------------------------------+---------------------------+ | kafooster@gmail.com | 2020 - 06 - 02 - t14:11:19内  | +---------------------------------------------------+---------------------------+ | pavel.finkelshtein@gmail.com | 2020 - 06 - 06 - t02:04:55 + 03:00 |+---------------------------------------------------+---------------------------+ | 49699333 + dependabot (bot) @users.noreply.github.com | 2020 - 06 - 19 - t09:35:47 + 03:00  | +---------------------------------------------------+---------------------------+ | ugai@jp.fujitsu.com | 2020 - 08 - 21日上午9点- t16:16:15 + |+---------------------------------------------------+---------------------------+ | 209830 + plastic-karma@users.noreply.github.com | 2020 - 09 - 09 - t22:58:37 07:00  | +---------------------------------------------------+---------------------------+ | gunnar.schulze@gmail.com | 2020 - 09 - 22 - t09:04:43 + 02:00 |+---------------------------------------------------+---------------------------+ | felix.engl@hotmail.com | 2020 - 10 - 08 - t10:23:11 + 02:00  | +---------------------------------------------------+---------------------------+ | j.j.r.rensen@student.tue.nl | 2020 - 11 - 30 - t23:27:32 + 01:00 |+---------------------------------------------------+---------------------------+ | nonpool@163.com | 2021 - 07 - 15 - t05:33:52 +喂饲  | +---------------------------------------------------+---------------------------+

哪个脚本更可读?即使对那些非常了解shell脚本的人来说,我敢打赌它仍然是第二个。哪种输出更好?绝对第二!我们还需要git log吗?也许现在是切换到专用工具的好时机!

以上就是9月份《数据工程注释》的全部内容。请关注JetBrains大数据工具推特并订阅我们的bob app官方下载 更多的消息!你随时可以找到我,帕莎·芬克尔什顿asm0dey@jetbrains.com或发送DM到我的个人推特帐户。你也可以通过以下方式与我们的团队取得联系big-data-tools@jetbrains.com.我们很乐意知道您遇到的任何其他有趣的数据工程文章!

发现更多