Jupyter 노트북의 상호 운용 가능한 파이썬 및 SQL.
팬더, 스파크 및 마스크 맨 위에 SQL 사용
참고 : 대부분의 코드 스 니펫은 SQL 구문 강조 표시를 보존하는 유일한 방법 이었기 때문에 이미지입니다.대화식 코드 예제에서는 이것을 확인하십시오Kaggle 노트북…에
Motivation
FUGUSEQL의 목표는 데이터 전문가가 SQL과 같은 언어로 워크 플로를 계산하는 워크 플로를 수행하는 데 대한 향상된 SQL 인터페이스 (및 경험)를 제공하는 것입니다.FUGUSEQL을 사용하면 SQL 사용자는 Python 코드 및 Jupyter 노트북의 데이터 프레임에서 전체 추출, 변환,로드 (ETL) 워크 플로를 수행 할 수 있습니다.SQL은 해당 팬더, 스파크 또는 DASK 코드에 파싱되고 매핑됩니다.
이 Empowe.아르 자형S 무거운 SQL 사용자는 스파크와 마스크의 힘을 활용하여 원하는 언어를 사용하여 논리를 표현합니다.또한 분산 된 컴퓨팅 키워드가 다음과 같이 추가되었습니다.선다
과지속하다
표준 SQL을 초과하여 기능을 확장하기 위해
이 기사에서는 기본 fuguesql 기능을 지나서 실행 엔진을 지정하여 스파크 또는 Dask 위에 사용하는 방법을지나갑니다.
ANSI SQL을 통한 향상된 기능

위의 GIF에서 본 첫 번째 변경 사항은하중
과저장
키워드.이를 넘어서, 더 친근한 구문을 제공하는 다른 개선 사항이 있습니다.또한 사용자는 Fuguesql에서 Python 함수를 사용하여 강력한 조합을 만듭니다.
FuguesQL 사용자는 노트북에 SQL 셀을 가질 수 있습니다 (나중에 더 많은 예제)%% FSQL.
셀 마법.또한 Jupyter 노트북에서 구문 강조 표시를 제공합니다.여기서 시연되지는 않았지만 이러한 SQL 셀은 파이썬 코드에서 사용할 수 있습니다.fsql ()
함수.
변수 할당
데이터 프레임은 변수에 할당 할 수 있습니다.이것은 SQL TEMP 테이블 또는 공통 테이블 표현식 (CTE)과 유사합니다.이 튜토리얼에서는이 데이터 프레임을 보여 주지만 SQL 셀에서 벗어나 파이썬 셀에서 사용될 수도 있습니다.아래 예제는 수정에서 나온 두 개의 새로운 데이터 프레임을 보여줍니다.Df.
…에Df.
파이썬 셀에서 팬더를 사용하여 생성되었습니다 (첫 번째 이미지와 동일한 DF).두 개의 새로운 데이터 프레임이 함께 가입되어 데이터 프레임이라는 데이터 프레임을 만듭니다.결정적인
…에

Jinja 템플릿
Fuguesql은 Jinja 템플릿을 통해 Python 변수와 상호 작용할 수 있습니다.이를 통해 Python Logic은 SQL의 매개 변수와 유사한 SQL 쿼리를 변경할 수 있습니다.

파이썬 기능
Fuguesql은 SQL 코드 블록 내에서 Python 함수를 사용하여 지원합니다.아래 예제에서는 우리가 사용합니다기분이 좋다
데이터 프레임의 두 열을 줄입니다.우리는 그 기능을 사용하여 기능을 호출합니다산출
SQL의 키워드.

Ipython-SQL과 비교합니다

FUGUSSQL은 이미 메모리에로드되는 데이터를 작동시키는 것을 의미합니다 (스토리지에서 데이터를 가져 오기 위해 데이터를 가져 오기 위해 사용하는 방법이있는 방법이 있습니다).프로젝트가 있습니다Ipython-SQL.그게 제시를 제공합니다%% SQL.
셀 마술 명령.이 명령은 SQL을 사용하여 데이터를 데이터베이스에서 파이썬 환경에로드하는 것을 의미합니다.
Fuguesql의 보증은 코드 변경없이 팬더, 스파크 및 마스크에서 동일한 SQL 코드가 작동 할 것입니다.Fuguesql의 초점은 데이터베이스에서 데이터를 로딩하는 것과는 대조적으로 메모리가 메모리 계산입니다.
스파크와 마스크가있는 분산 계산
우리가 일하는 데이터의 양이 계속 증가함에 따라 스파크와 마스크와 같은 분산 계산 엔진이 데이터 팀에서보다 널리 채택되고 있습니다.Fuguesql을 사용하면 동일한 Profienant 엔진을 동일한 FuguesQL 코드를 사용할 수 있습니다.
아래 코드 스 니펫에서 우리는 방금 셀 마술을 변경했습니다.%% FSQL.
…에%% fsql spark.
그리고 이제 SQL 코드는 스파크 실행 엔진에서 실행됩니다.비슷하게,%% FSQL DASK.
Dask 실행 엔진에서 SQL 코드를 실행합니다.

분산 된 컴퓨팅 환경으로 이사하는 것이 혜택을 누릴 수있는 공통된 작업 중 하나는 각 그룹의 중앙값을 얻고 있습니다.이 예제에서는 다음을 보여 드리겠습니다선다
키워드 및 데이터의 각 파티션에 함수를 적용하는 방법.
첫째, 데이터 프레임을 가져 와서 출력하는 파이썬 함수를 정의합니다.user_id.
그리고 중간측정
…에이 기능은 단 하나만 작동하는 것을 의미합니다user_id.
한 번에.기능이 팬더에서 정의 되더라도 스파크와 마스크에서 작동합니다.
그런 다음 그 다음에 사용할 수 있습니다선다
우리의 데이터를 분할하는 키워드user_id.
그를 적용하십시오get_median
함수.

이 예에서는 각 사용자의 중앙값 측정을 얻습니다.데이터 크기가 커짐에 따라 병렬화에서 더 많은 이점이 나타납니다.an.예제 노트북우리는 팬더 엔진 이이 작업에 대해 약 520 초가 걸렸습니다.스파크 엔진 (4 코어 병렬)을 사용하여 320 백만 줄의 데이터 세트에는 약 70 초가 걸렸습니다.
실행 시간의 차이가 예상됩니다.FUGUSEQL을 사용하면 데이터가 팬더가 효과적으로 처리 할 때 너무 크면 워크 플로우가 워크 플로우를 확장하고 DASK로 워크 플로우를 확장합니다.
또 다른 공통 유스 케이스는 DASK가 메모리 파편을 처리하고 디스크에 데이터를 기록합니다.즉, 사용자는 메모리 부족 문제를 해결하기 전에 더 많은 데이터를 처리 할 수 있음을 의미합니다.
결론 및 더 많은 예
이 기사에서는 사용자가 JUPYTER 노트북의 SQL 셀을 통해 팬더, 스파크 및 DASK 데이터 프레임 상단에서 작업 할 수있게 해주는 FUGUSEQL의 기본 기능을 탐구했습니다.
Fugue는 논리 및 실행을 쉽게 실행하여 런타임 중에 실행 엔진을 쉽게 지정할 수 있습니다.이렇게하면 Compute Framework의 논리 indepedent를 표현할 수있게하여 무거운 SQL 사용자를 구축합니다.상황이 전화를 걸 때 워크 플로를 쉽게 이주하거나 스파크하거나 마그네트를 으납니다.
하나의 블로그 게시물에서 덮을 수없는 많은 세부 정보와 기능이 많이 있습니다.종단 간 예제의 경우Kaggle 노트북우리는 사상 적 데이터 분석가 부트 캠프 학생들을 위해 준비했습니다.
노트북의 설치
Pugue (및 Fuguesql)는 Pypi를 통해 사용할 수 있습니다.그들은 PIP를 사용하여 설치할 수 있습니다 (Dask 및 Spark 설치는 별도의 설치).
PIP 설치 Fugue
노트북 내부, Fuguesql 셀 마술%% FSQL.
그를 실행 한 후에 사용할 수 있습니다설정
함수.또한 SQL 명령에 대한 구문 강조 표시를 제공합니다.
Fugue_Notebook 가져 오기 설정에서
설정()
Contact Us
Fuguesql을 사용하는 데 관심이 있으시면, 우리에게 의견을 보내거나 질문이 있으시면, 우리는 여유로 채팅하게되어 기쁩니다!또한 데이터 워크 플로우에 Fuguesql (또는 Fugue)을 적용하는 데 관심이있는 데이터 팀에 워크샵을 제공하고 있습니다.
Fuguesql은 더 넓은 푸가 생태계의 한 부분 일뿐입니다.Fugue는 사용자가 기본 파이썬에 코드를 작성한 다음 런타임 중에 코드 변경없이 팬더, 스파크 또는 Dask에서 코드를 실행할 수있는 추상화 계층입니다.위의 Repo에서 자세한 정보를 찾을 수 있습니다.