Sebastian Brestin,罗马尼亚克卢日县克卢日-纳波卡开发商
Sebastian is available for hire
Hire Sebastian

Sebastian Brestin

Verified Expert  in Engineering

Azure Databricks Developer

Location
Cluj-Napoca, Cluj County, Romania
Toptal Member Since
March 12, 2018

Since 2012, Sebastian一直在为Solaris等各种平台开发分布式系统, IBM AIX, HP-UX to Linux and Windows. He's worked with various technologies such as Apache Spark, Elasticsearch, PostgreSQL, RabbitMQ, Django, and Celery to build data-intensive scalable software. Sebastian热衷于提供高质量的解决方案,并对大数据挑战非常感兴趣.

Portfolio

Fortune 500 Retail Company (via Toptal)
Jupyter Notebook, Pandas, Amazon Web Services (AWS), Parquet, Python, PySpark
Reconstrukt(via Toptal)
Amazon Web Services (AWS), Asyncio, Tornado, Python
Spyhce
Jenkins, Docker, Cassandra, Redis, Elasticsearch, PostgreSQL, Apache Kafka...

Experience

Availability

Part-time

Preferred Environment

Amazon Web Services (AWS), Apache Kafka, Spark, Linux, Hadoop

The most amazing...

...我用Docker、Django、PostgreSQL和芹菜构建了一个MapReduce系统.

Work Experience

Data Engineer

2019 - 2021
Fortune 500 Retail Company (via Toptal)
  • 重新设计Spark应用程序,使其对数据科学家和软件工程师来说更加健壮和灵活.
  • Researched to increase Spark S3 parquet write performance. 为了分析Spark作业,我使用了Spark History Server和Ganglia来确定时间花在哪里,并比较配置修复.
  • 为Spark管道实现了一个健壮的通用测试框架.
  • 将Spark应用程序从一个单体重新设计为一个模块化的Spark应用程序,它可以编写中间结果并可以并行运行.
  • 构建了一个Spark应用程序,用于从多个来源摄取1TB的数据,并生成40k个可能的特征,数据科学团队可以根据这些特征执行EDA和测试模型.
  • 实现新的应用程序api,以帮助其他团队提高生产力.
技术:Jupyter Notebook, Pandas, Amazon Web Services (AWS), Parquet, Python, PySpark

Python Developer

2018 - 2019
Reconstrukt(via Toptal)
  • 使用Python Tornado实现了一个实时视频渲染系统的并发编排器.
  • Used HTTP, Websockets, 原始TCP连接、AWS S3和NAS存储来构建处理内容所需的管道.
技术:亚马逊网络服务(AWS)、Asyncio、Tornado、Python

Data Engineer

2016 - 2018
Spyhce
  • 通过创建三个基于spark的应用程序,将可变对象(用户可以创建/更新)与其他数百万个不可变对象实时匹配(或尽可能接近). 有关该项目的其他详细信息可以在我的投资组合部分找到.
  • Built a task manager Django application over Celery. 该应用程序允许管理员轻松地管理任务和查看进度/统计数据,而无需额外的监控服务.
  • 为了跟踪所有的用户操作,在Django ORM上开发了一个Django审计应用程序.
Technologies: Jenkins, Docker, Cassandra, Redis, Elasticsearch, PostgreSQL, Apache Kafka, RabbitMQ, Celery, Django, Python, Spark

Software Engineer

2012 - 2016
Hewlett-Packard
  • 为虚拟设备开发了一个基于Python的构建系统,该系统允许HP客户轻松地将产品部署到生产环境中.
  • Maintained the project.
  • 引入了服务器代理使用的软件/补丁时间窗口安装,以避免在关键时间加载/重新启动服务器.
  • 领导所有服务器和客户端组件之间从SSL到TLS的升级.
  • 重新设计了服务器代理用来选择IP地址以便与核心组件通信的策略.
  • 遗留代码重构,以支持Windows服务器代理的自定义安装路径.
Technologies: OpenSSL, Windows, Unix, Linux, PostgreSQL, Oracle Database, C++, Python, Spring, WebLogic, WildFly, Java

Software Developer

2012 - 2012
GFI Software
  • 通过使用局域网邻居的缓存提高补丁下载速度.
  • Enhanced the build system for a better UX.
  • Maintained the project.
  • 重新设计产品遗留架构,以便轻松扩展新功能.
  • 增加了发现局域网内Android和iOS设备的功能.
Technologies: Microsoft SQL Server, Delphi, .NET, C#, C++

个性化引擎优化(财富500强零售公司)

Context:
We wanted to improve the user and developer experience. The Spark application was presenting performance problems, and tech debt became a blocker for adding new functionality.

Solution:
重新设计Spark应用程序,使其更加健壮和灵活的数据科学家和软件工程师:
Partitioned data to avoid shuffles and data skew
减少分区数量,同时增加分区大小,以避免数据倾斜和驱动程序拥塞
使用策略缓存以避免重新计算,并通过减少查询计划来改进计算
将应用程序重构为管道,以便工程师将功能作为插件添加到管道中
在具有相等比较值的行的情况下生成确定性Spark输出

Results:
减少了50%的执行时间,增加了配置灵活性, 在第二轮中,哪一个提高了数据科学家的生产力
减少了技术债务,从而改善了开发时间和开发体验
Improved functional tests by having a deterministic output

个性化引擎编写优化(财富500强零售公司)

Context:
我们希望提高集群的可用性,因为它被长时间运行的Spark作业阻塞了.

Solution:
Researched to increase Spark S3 parquet write performance. To analyze Spark jobs, 我已经使用Spark History Server和Ganglia来查明时间花在哪里,并比较配置修复.

Results:
Increased write performance by a factor of three.

个性化引擎测试框架(财富500强零售公司)

Context:
我们希望提高产品的稳定性和我们的开发过程.

Solution:
为Spark管道实现健壮和通用的功能测试框架;
Allowed multiple instances of a test to run in parallel
允许测试作为套件的一部分以管道方式运行
Simulated production runs by using a representative dataset

Results:
Faster POC development
Reduced development time by 50%
Increased product stability
通过使用更少的资源模拟生产运行,降低了AWS成本

个性化引擎管道优化(财富500强零售企业)

Context:
我们的一些Spark应用程序是长时间运行长达9小时的应用程序. 在此时间范围内,节点可能会内存不足或失去连接. 我们希望我们的应用程序运行得更快,并且在发生故障时更容易恢复.

Solution:
将Spark应用程序从一个单体重新设计为一个模块化的Spark应用程序,它可以编写中间结果并可以并行运行.

Results:
No failures due to out of memory
Easier to recover by re-running only the failed module

个性化引擎流失模型(财富500强零售公司)

Context:
我们想要一个流失模型,我们可以用它来预测我们会员的未来,并将其集成到其他Spark应用程序中.

Solution:
构建了一个Spark应用程序,用于从多个来源摄取1TB的数据,并生成40k个可能的特征,数据科学团队可以根据这些特征执行EDA和测试模型.

个性化引擎应用开发(财富500强零售公司)

Context:
数据科学团队必须最有效地使用数据和我们的系统来提高生产力.

Solution:
实现新的应用程序api,以帮助其他团队提高生产力;
1. Wrote better API for complex Spark or Cloud functionality
2. Wrote wrappers for complex application configuration
3. Implemented integration with adjacent applications
4. Wrote documentation and Unit Tests
5. Ran data analysis and data quality checks

Django MapReduce System

For a minimum viable product, 我设计并实现了一个定制的Django MapReduce系统,用于将一个对象与其他数百万个对象进行匹配. 系统在60个Docker节点上运行,一个匹配任务在60秒内运行. 为了测试系统,我扩展了Django测试框架,以便在本地测试Django自定义MapReduce系统,而不需要通过使用多个进程和核心来生成虚拟机.

Spyhce | Mutable Object Matching Project

该项目旨在实时(或尽可能接近)将可变对象(用户可以创建/更新)与数百万个不可变对象进行匹配。.

We chose Apache Spark because of its Python support, rich analytics toolkit, and streaming capabilities.

The solution was split into three Spark apps:
01. 使用Kafka和Spark流从数据源中检索可变数据, extracting features and saving the result to Cassandra.
02. 使用Kafka和Spark流从数据源中检索不可变数据, 提取特征并将结果保存到磁盘作为Parquet文件.
03. Loads data from Parquet files, 计算所有不可变对象与来自Cassandra的单个可变对象之间的匹配百分比.

In order to query data in a reasonable amount of time, 我使用Elasticsearch对PostgreSQL表(数十亿条记录)进行了反规范化. 这将读性能提高了两个数量级,但增加了写损失. 因为只有部分文档频繁更改, 这个问题通过使用Elasticsearch对复杂字段的批量部分更新和Groovy脚本解决了.

Single Sign-on Platform

I led the implementation of a single-sign-on platform, using OpenID Connect, Django, PostgreSQL, Angular/TypeScript和AWS(它集成了客户的整个产品套件).

Machine Learning

While working as a contractor, I used NLTK, Scikit-learn, AWS Transcribe, AWS Lambda运行情绪分析以改善客户支持.

High-content-streaming Platform

我领导了一个使用Django的高内容流平台的实现, PostgreSQL, Elasticsearch, and AWS. 该系统允许使用RESTful API高效地推送/提取内容.

Spark Secondary Sort

http://www.qwertee.io/blog/spark-secondary-sort/
在使用Spark时,我注意到缺乏关于PySpark的适当文档. 这种情况促使我将这篇文章放在一起,旨在全面解释使用PySpark的二级排序设计模式.

The article covers two solutions. 第一个解决方案使用Spark的groupByKey,它在reducer阶段进行排序,而第二个解决方案使用Spark的repartitionAndSortWithinPartitions,它利用shuffle阶段和迭代器到迭代器的转换来更有效地排序,而且不会耗尽内存.

PostgreSQL Data Partitioning and Django

http://www.qwertee.io/blog/postgres-data-partitioning-and-django/
我写了一篇关于PostgreSQL和数据分区的文章,并提供了使用Django web框架的实际示例.

本文的第一部分介绍了对数据进行分区的原因,以及如何在PostgreSQL中实现分区.

第二部分描述了在使用web框架(如Django)时可以利用PostgreSQL分区的一些解决方案.

PostgreSQL B-Tree Index Explained | Part 1

http://www.qwertee.io/blog/postgresql-b-tree-index-explained-part-1/
与PostgreSQL打交道多年的经历激发了我写一篇任何开发人员都应该知道的关于索引的文章.

In the first section of the article, 我将介绍PostgreSQL b树索引结构的基本原理,重点介绍b树数据结构及其主要组件——叶节点和内部节点, what are their roles, 以及在执行查询时如何访问它们(这个过程也称为索引查找). The section ends with the index classification, 更广泛地了解索引关键度,这有助于解释对查询性能的影响.

In the second section, 下面是对查询计划的快速介绍,以便更好地理解后面的示例.

In the third section, I introduce the concept of predicates, 并且解释了PostgreSQL根据索引定义和可行性对谓词进行分类的过程.

最后一节将深入讨论扫描的机制以及索引如何定义, data distribution, 甚至谓词的使用也会影响查询的性能.

Languages

Python, C++, Java, Delphi, C#, TypeScript, JavaScript

Frameworks

Hadoop, Apache Spark, JSON Web Tokens (JWT), OAuth 2, Django REST框架,Django, .NET, Spring, Spark, Twisted, Spring MVC, Angular

Libraries/APIs

PySpark, NumPy, Pandas, Asyncio, OpenSSL, Scikit-learn, ZeroMQ, Natural Language Toolkit (NLTK)

Tools

Celery, RabbitMQ, WildFly, Ganglia, Amazon Elastic MapReduce (EMR), VMware vSphere, Apache Avro, Subversion (SVN), Git, Jenkins

Platforms

Amazon Web Services (AWS), Apache Kafka, Windows, Linux, Ubuntu, Oracle Database, Unix, Jupyter Notebook, HP-UX, Solaris, Docker

Storage

Elasticsearch, PostgreSQL, Microsoft SQL Server, Cassandra, Amazon S3 (AWS S3), Memcached, Redis, Oracle RDBMS, MongoDB, SQL Server 2012, MySQL

Other

RESTful Web Services, Data Mining, Data Engineering, OpenID Connect (OIDC), Azure Databricks, WebLogic, Parquet, VMware ESXi, Apache Cassandra, NATS, Apache Flume, Cryptography, Tornado

Paradigms

Scrum

2010 - 2013

Bachelor's Degree in Computer Science

University of Babeș-Bolyai - Cluj-Napoca, Romania

MAY 2014 - MAY 2016

Certified Scrum Master

Scrum Alliance

APRIL 2014 - PRESENT

Oracle Certified Associate, Java SE 7 Programmer

Net BRINEL SA

Collaboration That Works

How to Work with Toptal

在数小时内,而不是数周或数月,我们的网络将为您直接匹配全球行业专家.

1

Share your needs

在与Toptal领域专家的电话中讨论您的需求并细化您的范围.
2

Choose your talent

在24小时内获得专业匹配人才的简短列表,以进行审查,面试和选择.
3

Start your risk-free talent trial

与你选择的人才一起工作,试用最多两周. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring