작성자: Craig Lukasik , Allison Wang
이 블로그에서는 Spark의 새로운 Python 데이터 소스 API가 IoT 데이터 수집을 어떻게 간소화하는지 살펴봅니다.
데이터 엔지니어링 팀은 수많은 맞춤형, 독점 또는 산업별 데이터 소스에 대한 맞춤형 수집 솔루션을 구축하는 작업을 자주 맡습니다. 많은 팀은 이러한 수집 솔루션 구축 작업이 번거롭고 시간이 많이 걸린다는 것을 알게 됩니다. 이러한 과제를 인식하고 다양한 산업에 걸쳐 수많은 회사를 인터뷰하여 다양한 데이터 통합 요구 사항을 더 잘 이해했습니다. 이러한 포괄적인 피드백을 통해 Apache Spark™용 Python 데이터 소스 API를 개발하게 되었습니다.
긴밀하게 협력해 온 고객 중 하나는 Shell입니다. 에너지 부문에서 장비 고장은 안전, 환경 및 운영 안정성에 영향을 미쳐 심각한 결과를 초래할 수 있습니다. Shell에서는 이러한 위험을 최소화하는 것이 우선 순위이며, 이를 수행하는 한 가지 방법은 장비의 안정적인 작동에 중점을 두는 것입니다.
Shell은 1,800억 달러 이상의 가치를 지닌 방대한 자본 자산과 장비를 보유하고 있습니다. Shell 운영에서 생성되는 방대한 양의 데이터를 관리하기 위해 생산성을 향상시키고 데이터 팀이 다양한 이니셔티브에 걸쳐 원활하게 작업할 수 있도록 하는 고급 도구에 의존합니다. Databricks 데이터 인텔리전스 플랫폼은 데이터 액세스를 민주화하고 Shell의 분석가, 엔지니어 및 과학자 간의 협업을 촉진하는 데 중요한 역할을 합니다. 그러나 IoT 데이터 통합은 일부 사용 사례에 어려움을 안겨주었습니다.
Shell과의 작업을 예로 들어, 이 블로그에서는 이 새로운 API가 이전의 과제를 어떻게 해결하는지 살펴보고 적용 사례를 설명하는 코드 예제를 제공할 것입니다.

먼저 Shell의 데이터 엔지니어가 경험했던 과제를 살펴보겠습니다. 데이터 파이프라인의 많은 데이터 소스는 내장된 Spark 소스(예: Kafka)를 사용하지만, 일부는 REST API, SDK 또는 기타 메커니즘에 의존하여 소비자에게 데이터를 노출합니다. Shell의 데이터 엔지니어는 이 사실 때문에 어려움을 겪었습니다. 결국 내장된 Spark 소스의 데이터와 이러한 소스의 데이터를 조인하기 위한 맞춤형 솔루션을 만들게 되었습니다. 이 과제는 데이터 엔지니어의 시간과 에너지를 소모했습니다. 대규모 조직에서 흔히 볼 수 있듯이 이러한 맞춤형 구현은 구현 및 결과의 불일치를 초래합니다. Shell의 최고 디지털 기술 고문인 Bryce Bartmann은 단순함을 원하며 다음과 같이 말했습니다. “우리는 스트리밍 사용 사례를 포함하여 많은 멋진 REST API를 작성하며, 모든 연 결 코드를 직접 작성하는 대신 Databricks에서 데이터 소스로 사용하고 싶습니다.”
“우리는 스트리밍 사용 사례를 포함하여 많은 멋진 REST API를 작성하며, 모든 연결 코드를 직접 작성하는 대신 Databricks에서 데이터 소스로 사용하고 싶습니다.” - Bryce Bartmann, Shell 최고 디지털 기술 고문
새로운 Python 사용자 지정 데이터 소스 API는 객체 지향 개념을 사용하여 문제를 접근할 수 있도록 하여 불편함을 완화합니다. 새로운 API는 REST API 기반 조회와 같은 사용자 지정 코드를 캡슐화하고 다른 Spark 소스 또는 싱크로 노출할 수 있는 추상 클래스를 제공합니다.
데이터 엔지니어는 단순성과 구성 가능성을 원합니다. 예를 들어, 데이터 엔지니어이고 스트리밍 파이프라인에 날씨 데이터를 수집하고 싶다고 가정해 보겠습니다. 이상적으로는 다음과 같이 보이는 코드를 작성하고 싶을 것입니다.
이 코드는 간단해 보이며, 데이터 엔지니어는 이미 DataFrame API에 익숙하기 때문에 사용하기 쉽습니다. 이전에는 Spark 작업에서 REST API에 액세스하는 일반적인 접근 방식은 PandasUDF를 사용하는 것이었습니다. 이 문서