Python ETL 도구 : 최고의 8 가지 옵션

Python으로 ETL을 수행하고 싶습니까? 다음은 8 개의 훌륭한 라이브러리와 하이브리드 옵션입니다.

ETL은 하나 또는 여러 시스템에서 데이터를 가져 와서 중간 변환을 수행 한 후 대상 데이터웨어 하우스에로드하는 프로세스입니다. 시장에는이 프로세스를 수행 할 수있는 다양한 ETL 도구가 있습니다.

일부 도구는 즉시 사용 가능한 완전한 엔드-투-엔드 ETL 구현을 제공하고 일부 도구는 사용자 지정 ETL 프로세스를 처음부터 만드는 데 도움이되며 그 사이에있는 몇 가지 옵션이 있습니다. 이 게시물에서는 일반적으로 사용되는 Python ETL 도구를 살펴보고 어떤 상황에서 프로젝트에 적합한 지 이해합니다.

Python ETL 도구 목록을 살펴보기 전에 먼저 ETL 도구가 가져야하는 몇 가지 필수 기능을 이해해 보겠습니다.

ETL 도구의 기능

ETL은 Extract, Transform 및 Load를 의미하므로 모든 ETL 도구에는 최소한 다음 기능이 있어야합니다.

추출물

이것은 다양한 소스에서 데이터를 추출하는 프로세스입니다. 좋은 ETL 도구는 다양한 유형의 데이터 소스를 지원합니다. 여기에는 대부분의 데이터베이스 (NoSQL 및 SQL 기반)와 csv, xls, xml 및 json과 같은 파일 형식이 포함되어야합니다.

변환

추출 된 데이터는 일반적으로 원시 데이터가 정리되고 데이터웨어 하우스에 저장하기위한 의미있는 형식으로 변환되는 스테이징 영역에 보관됩니다. 표준 ETL 도구는 행 작업, 조인, 정렬, 집계 등과 같은 모든 기본 데이터 변환 기능을 지원합니다.

하중

로드 프로세스에서 변환 된 데이터는 대상웨어 하우스 데이터베이스에로드됩니다. 표준 ETL 도구는 Snowflake, MS SQL 및 Oracle과 같은 다양한 데이터베이스 용 커넥터를 지원합니다.

기타 추가 기능

기본 ETL 기능 외에도 일부 도구는 다양한 ETL 파이프 라인을 시각화하고 추적하기위한 대시 보드와 같은 추가 기능을 지원합니다. 실제로 ETL 외에도 일부 도구는 병렬 또는 분산 처리를 수행하는 기능을 제공하며 경우에 따라 프로젝트 요구 사항에 따라 좋은 추가 기능이 될 수있는 기본 분석도 제공합니다.

Python ETL 도구

Python은 비교적 배우고 사용하기 쉬운 프로그래밍 언어입니다. Python은 GitHub에서 인상적으로 활발한 오픈 소스 커뮤니티를 보유하고 있으며 정기적으로 새로운 Python 라이브러리와 향상 기능을 제공합니다. 이 활발한 커뮤니티와 Python의 낮은 난이도 / 기능성 비율로 인해 Python은 이제 게임 개발, 웹 개발, 애플리케이션 개발, NLP 및 컴퓨터 비전과 같은 다양한 분야에서 인상적인 존재감을 자랑합니다.

최근 몇 년 동안 Python은 데이터 처리, 데이터 분석 및 데이터 과학 (특히 강력한 Pandas 데이터 과학 라이브러리에서)을위한 인기있는 프로그래밍 언어 선택이되었습니다. 따라서 선택할 수있는 Python ETL 도구가 많이 있다는 것은 놀라운 일이 아닙니다. 가장 일반적인 것을 살펴 보겠습니다.

페틀

https://petl.readthedocs.io/en/stable/(Python ETL의 약자)는 다양한 소스 (예 : csv, XML, json, text, xls)에서 데이터베이스로 데이터를 가져 오는 표준 ETL 기능을 제공하는 기본 도구입니다. 기능 측면에서 사소하며 목록의 다른 도구와 같은 데이터 분석 기능을 제공하지 않습니다. 그러나 행 작업, 정렬, 결합 및 집계와 같은 모든 표준 변환을 지원합니다.

Petl은 간단한 도구로는 나쁘지 않지만 성능 문제로 어려움을 겪을 수 있습니다. 특히 다른 옵션과 비교하면 더욱 그렇습니다. 따라서 간단한 ETL 파이프 라인을 구축하기 만하면되고 성능이 큰 요인이 아니라면이 경량 도구가 작업을 수행해야합니다. 그러나 더 복잡한 것이 있거나 프로젝트의 범위가 커질 것으로 예상되는 경우 계속 찾고 싶을 수 있습니다.

판다

ETL에 유용한 Python 라이브러리 인 Pandas 로고

https://pandas.pydata.org/요즘 가장 인기있는 Python 라이브러리 중 하나이며 개인적으로 좋아하는 라이브러리입니다. 수 문학 데이터, 천체 물리학 데이터, 드론 데이터를 처리하는 데 사용했습니다. 그 자체로 빠르게 성장하는 분야 인 데이터 사이언스에서의 사용으로 인해 인기가 높아지고 처음 접하게되었습니다.

Pandas 는 데이터 프레임 을 데이터 구조로 사용 하여 데이터를 메모리에 보관합니다 (R 프로그래밍 언어에서 데이터가 처리되는 방식과 유사). Pandas는 일반 ETL 기능과 별도로 데이터 분석 및 시각화 기능을 지원합니다.

Pandas는 비교적 사용하기 쉽고 풍부한 기능이 많기 때문에 데이터 과학자가 간단한 ETL 및 탐색 데이터 분석에 일반적으로 사용되는 도구입니다. 이미 Pandas를 사용하고 있다면 개념 증명 ETL 파이프 라인을 배포하는 데 좋은 솔루션이 될 수 있습니다.

마라

https://github.com/mara경량이지만 여전히 ETL 파이프 라인을 생성하기위한 표준 기능을 제공하는 Python ETL 도구입니다. 또한 웹 기반 UI 및 명령 줄 통합과 같은 기타 기본 제공 기능을 제공합니다. 웹 UI는 ETL 파이프 라인 실행을 시각화하는 데 도움이되며 Flask 기반 앱에도 통합 될 수 있습니다. PostgreSQL을 데이터 처리 엔진으로 사용합니다.

단순하지만 여전히 정교한 기능이있는 ETL 도구를 찾고 있다면 Mara가 좋은 선택이 될 수 있습니다.

기류

Apache Airflow 로고

https://airflow.apache.org/Airbnb에서 만든 오픈 소스 워크 플로 관리 도구입니다. 데이터 ETL 파이프 라인을 생성하는 데 사용할 수 있습니다. 엄밀히 말하면 ETL 도구 자체가 아니라 워크 플로를 생성, 예약 및 모니터링하는 데 사용할 수있는 오케스트레이션 도구에 가깝습니다. 즉, Airflow를 사용하여 ETL 프로세스의 다양한 독립적으로 작성된 모듈을 통합하여 파이프 라인을 만들 수 있습니다.

기류 워크 플로우는 DAG (Directed Acyclic Graph) 개념을 따릅니다. 목록의 다른 도구와 마찬가지로 Airflow에는 워크 플로를 시각화하고 여러 워크 플로의 실행을 추적하는 브라우저 기반 대시 보드도 있습니다. 독립 모듈과 기존 모듈을 함께 연결하여 복잡한 ETL 워크 플로를 만들려는 경우 Airflow가 좋은 선택입니다.

Pyspark

PySpark 로고

https://spark.apache.org/docs/latest/api/python/index.htmlPython에서 실행되는 Spark 버전이므로 이름입니다. 웹 사이트에 따르면 "Spark는 대규모 데이터 처리를위한 통합 분석 엔진입니다."

Spark 코어는 ETL 파이프 라인 생성을위한 강력한 기능을 제공 할뿐만 아니라 데이터 스트리밍 (Spark Streaming), SQL (Spark SQL), 기계 학습 (MLib) 및 그래프 처리 (그래프 X)도 지원합니다.

Pyspark 사용의 주요 이점은 방대한 양의 데이터를 빠르게 처리한다는 것입니다. 따라서 빅 데이터를 매우 빠르게 처리하거나 데이터 스트림을 처리하기 위해 ETL 파이프 라인을 생성하려는 경우 Pyspark를 반드시 고려해야합니다. 즉, 기본 제공되는 ETL 솔루션이 아니라 ETL 파이프 라인 배포의 일부가됩니다.

보노보

Bonobo Python ETL 도구 로고

https://www.bonobo-project.org/Python을 사용하여 빌드 된 경량 ETL 도구입니다. 간단하고 비교적 배우기 쉽습니다. 그래프 개념을 사용하여 파이프 라인을 생성하고 파이프 라인에있는 여러 요소의 병렬 처리도 지원합니다. 또한 사용자가 ETL 파이프 라인의 진행 상황을 추적 할 수있는 시각적 인터페이스가 있습니다.

대체로 사용하기 쉬운 또 다른 ETL Python 도구로, 간단한 사용 사례에는 좋은 옵션이 될 수 있지만 팩과 구분되는 눈에 띄는 기능이 많지 않습니다.
(예,이 목록에는 Pandas와 Bonobos가 모두 있습니다)

루이지

Luigi Python ETL 도구 로고

https://github.com/spotify/luigiSpotify에서 만든 Python 기반 ETL 도구이지만 이제는 오픈 소스 도구로 사용할 수 있습니다. 이 목록에있는 많은 도구보다 더 정교한 도구이며 복잡한 ETL 파이프 라인을 생성하기위한 강력한 기능이 있습니다. Github 페이지에 따르면 " 종속성 해결, 워크 플로 관리, 시각화, 실패 처리, 명령 줄 통합 등을 처리합니다" .

또한 모든 ETL 작업을 추적하는 웹 대시 보드가 함께 제공됩니다. 엔터프라이즈 솔루션을 구축하려는 경우 Luigi가 좋은 선택 일 수 있습니다.

오도

https://pypi.org/project/odo/데이터를 한 형식에서 다른 형식으로 변환 할 수있는 Python 도구입니다. 그러나 주요 주목할만한 기능은 거대한 csv 데이터 세트를 다양한 데이터베이스에로드 할 때 제공하는 성능입니다.

웹 사이트에서 설명 하듯이 “Odo는 지원하는 데이터베이스의 기본 CSV 로딩 기능을 사용합니다. 이 로더는 매우 빠릅니다. Odo는 대규모 데이터 세트를로드 할 때 다른 순수한 Python 접근 방식을 능가합니다. "

나는 이러한 주장을 확인하기 위해 성능 테스트를 한 적이 없지만 누군가가 있다면 의견을 공유하십시오. 그러나 어쨌든 유스 케이스는 분명해 보입니다. 데이터웨어 하우스에 거대한 csv 데이터 세트를로드하는 데 초점을 맞추는 간단한 파이프 라인을 생성하려는 경우 Odo를 시도해야합니다.

하이브리드 옵션

ETL 배포에서 순수 Python을 사용하는 대신 다음을 살펴볼 수 있습니다. https://avikcloud.com/. Avik Cloud는 Flow Builder에서 ETL 파이프 라인을 시각적으로 구축 할 수있는 Apache Spark 기반 ETL 플랫폼입니다. Avik Cloud를 사용하면 ETL 파이프 라인에 Python 코드를 직접 입력 할 수 있습니다.

Python 코드를 직접 추가 할 수있는 Avik Cloud flowbuilder ETL 도구

한 가지 단점은 Python 라이브러리와 달리 Avik Cloud는 SAAS 제품이며 라이선스 비용을 청구한다는 것입니다. 좋은 부분은 가격 구조가 AWS, Google Cloud 및 Azure와 같은 클라우드 공급자의 가격 책정 관행을 기반으로하며 사용량에 대해서만 청구된다는 것입니다.

놀라운 옵션 : 데이터 가상화로 ETL 건너 뛰기

이상하게 들릴지 모르지만 일부 회사는 다음을 통한 직접 통합을 위해 ETL 사용에서 완전히 전환했습니다. https://en.wikipedia.org/wiki/Data_virtualization.

데이터 가상화는 서로 다른 사일로에서 데이터를 통합하는 논리적 데이터 계층입니다. 데이터 가상화는 통합 데이터를 관리하고 중앙 집중식 보안 및 거버넌스를 통해 사용자에게 제공합니다.

https://www.denodo.com/en/data-virtualization/overview 데이터 관리 / 엔지니어링 옵션으로 데이터 가상화를 제공합니다.

https://www.knowi.com/한 단계 더 나아가 데이터 가상화를 사용하여 비즈니스 인텔리전스 플랫폼을 강화합니다. 서로 다른 데이터 소스에 연결하는 데이터 가상화의 기능을 통해 Knowi는 먼저 ETL을 사용하여 데이터웨어 하우스로 데이터를 이동하지 않고도 실시간으로 데이터에 연결하고 시각화 할 수 있습니다.

결론

보시다시피 선택할 수있는 Python ETL 도구가 많이 있으며 각 도구에는 고유 한 기능과 단점이 있습니다. 표준 ETL 기능만을 찾고 있든 더 많은 추가 기능과 정교함을 찾고 있든 Python이 좋은 선택 일 수 있습니다. 움직이는 부분이 더 많은 엔터프라이즈 솔루션을 구축하려는 경우 다음과 같은 하이브리드 솔루션을 살펴 보는 것이 좋습니다.https://avikcloud.com,이를 통해 ETL 파이프 라인에서 Python 변환을 수행 할 수 있지만 여전히 다른 데이터 소스 및 제품에 쉽게 연결할 수 있습니다.

Suggested posts

양자 컴퓨팅 Pt를위한 프로그래밍. 1 : NumPy

이제 양자 컴퓨팅이면의 물리학을 배우기 시작 했으므로 "이봐, 실제로 양자 컴퓨터를 사용하려면 실제로 양자 장치를 손으로 만들어야합니까?"라고 궁금해 할 것입니다. 답은 양자 컴퓨터를 컴퓨터라고 부르는 이유가 있습니다. 프로그래밍이 가능합니다! 이 시리즈에서는 수학 개념을 시뮬레이션하고 양자 컴퓨터에서 실행하는 소프트웨어를 구축하는 방법을 배우게됩니다. 깨끗하고 현대적이며 라이브러리가 풍부한 언어이기 때문에 Python을 사용하여 코드를 작성할 것입니다.

IBM Watson Studio의 AutoAI 노트북으로 마술사 코드 깨기

IBM Watson Studio의 AutoAI 노트북으로 마술사 코드 깨기

가장 유명한 행동 강령 중 하나입니다. "마술사는 절대 비밀을 밝히지 않습니다." 그러나 청중이 너무나 놀라워 서 '방금 일어난 일'이라는 느낌에 놀라서 비밀을 밝히지 않는 것이 거의 잔인한 순간이 있습니다.

Related posts

"실용적인 프로그래머"의 5 가지 필수 사항

역대 베스트셀러 코딩 북의 요점

"실용적인 프로그래머"의 5 가지 필수 사항

Pragmatic Programmer는 1999 년에 처음 출판되었으며 이후 역대 최고의 프로그래밍 책으로 선정되었습니다. 저자 Andy Hunt와 David Thomas는 Agile Manifesto의 원저자 중 하나였으며 몇 가지 심각한 자격을 가지고 있습니다.

대규모 GraphQL 쿼리 공격으로부터 보호

공격자가 공개적으로 사용 가능한 GraphQL 인터페이스를 사용하여 사이트를 스크랩하거나 서비스 거부 공격을 실행하는 방법에 대해 알아보십시오. 이들은 4 가지 방법 중 하나로이를 수행 할 수 있습니다. 단일 대형 쿼리를 신중하게 구성하여 실행하고, 관련 데이터를 가져올 수있는 병렬 쿼리를 많이 작성하고, 일괄 요청을 사용하여 많은 쿼리를 연속적으로 실행하고, 마지막으로 많은 요청을 보냅니다.

기술 인터뷰의 사회적 구성 요소

코딩 문제는 스트레스가 많지만 스트레스에 대한 당신의 반응은 당신의 기술적 능력보다 더 크게 말합니다.

기술 인터뷰의 사회적 구성 요소

기술 업계의 직책을 위해 인터뷰 할 때 일반적으로 제안을 고려하기 전에 최소한 3 차례의 인터뷰를 거치게됩니다. 라운드는 일반적으로 다음과 같습니다. 그렇게 생각하면 잘못된 것입니다.

훌륭한 개발자의 3 가지 행동 특성

훌륭한 개발자의 3 가지 행동 특성

훌륭한 개발자를 만드는 비 기술적 인 것들 나는이 기사를 작성하는 것을 한동안 미루고 있습니다. 나는 그것을 작성할 자격이 있다고 생각하지 못했습니다. 오늘은 쓸 때라고 생각했습니다.