Databricks API, SQL 커넥터 및 CLI를 통한 Bright Data 데이터셋 쿼리

REST API, CLI 또는 SQL 커넥터를 사용하여 Databricks 내에서 Bright Data 데이터셋을 쉽게 쿼리하는 방법을 알아보세요. 단계별 설정 및 코드가 포함되어 있습니다!
4 분 읽기
Querying Bright Data Datasets via Databricks API

이 글에서 알아볼 내용:

  • Bright Data가 Databricks에서 제공하는 제품
  • Databricks 계정을 설정하고 프로그래매틱 데이터 검색 및 탐색에 필요한 모든 자격 증명을 획득하는 방법.
  • Databricks의 REST API()를 사용하여 Bright Data 데이터셋을 쿼리하는 방법
    • REST API
    • CLI
    • SQL 커넥터

자, 시작해 보겠습니다!

Databricks의 Bright Data 데이터 제품

Databricks는 대규모 기업용 데이터, 분석 및 AI 솔루션을 구축, 배포, 공유 및 유지 관리하기 위한 오픈 분석 플랫폼입니다. 웹사이트에서는 여러 공급자의 데이터 제품을 찾을 수 있어 최고의 데이터 마켓플레이스 중 하나로 꼽힙니다.

Bright Data는 최근 데이터 제품 공급자로Databricks에 합류하여 이미 40개 이상의 제품을 제공하고있습니다:

이러한 솔루션에는 B2B 데이터셋, 기업 데이터셋, 금융 데이터셋, 부동산 데이터셋 등이 포함됩니다. 또한 Bright Data의 인프라를 통해 Scraping BrowserWeb Scraper API와 같은 보다 일반적인 웹 데이터 검색 및 웹 스크래핑 솔루션도 이용할 수 있습니다.

이 튜토리얼에서는 Databricks API, CLI 및 전용 SQL 커넥터 라이브러리를 사용하여 이러한 Bright Data 데이터 세트 중 하나에서 프로그래밍 방식으로 데이터를 쿼리하는 방법을 배웁니다. 시작해 보겠습니다!

Databricks 시작하기

API 또는 CLI를 통해 Databricks에서 Bright Data 데이터셋을 쿼리하려면 먼저 몇 가지 설정이 필요합니다. 아래 단계를 따라 Databricks 계정을 구성하고 Bright Data 데이터셋 접근 및 통합에 필요한 모든 자격 증명을 획득하세요.

이 섹션을 마치면 다음과 같은 환경을 구축하게 됩니다:

  • 구성된 Databricks 계정
  • Databricks 액세스 토큰
  • Databricks 웨어하우스 ID
  • Databricks 호스트 문자열
  • Databricks 계정 내 하나 이상의 Bright Data 데이터셋에 대한 접근 권한

필수 조건

먼저 Databricks 계정(무료 계정으로도 충분)이 있는지 확인하십시오. 계정이 없다면 계정을 생성하십시오. 이미 계정이 있다면 로그인하십시오.

Databricks 액세스 토큰 구성

Databricks 리소스에 대한 접근 권한을 부여하려면 액세스 토큰이 필요합니다. 아래 지침에 따라 설정하세요.

Databricks 대시보드에서 프로필 이미지를 클릭하고 “설정” 옵션을 선택하세요:

Selecting the “Settings” option

“설정” 페이지에서 “개발자” 옵션을 선택한 후 “액세스 토큰” 섹션의 “관리” 버튼을 클릭하세요:

Clicking the “Manage” button in the “Access tokens” section

“액세스 토큰” 페이지에서 “새 토큰 생성”을 클릭하고 모달의 안내를 따르세요:

Pressing the “Generate new token” button

Databricks API 액세스 토큰이 발급됩니다. 곧 필요할 수 있으니 안전한 곳에 보관하세요.

Databricks 웨어하우스 ID 확인하기

API를 프로그래밍 방식으로 호출하거나 CLI를 통해 데이터셋을 쿼리하기 위해 필요한 또 다른 정보는 Databricks 웨어하우스 ID입니다. 이를 확인하려면 메뉴에서 “SQL 웨어하우스” 옵션을 선택하세요:

Selecting the “SQL Warehouses” option

사용 가능한 웨어하우스(이 예시에서는 “Serverless Starter Warehouse”)를 클릭하고 “개요” 탭으로 이동하세요:

The “Overview” tab of your selected Databricks warehouse

“Name” 섹션에서 Databricks 웨어하우스 ID(괄호 안에 ID: 뒤에 표시됨)를 확인할 수 있습니다. 이를 복사하여 안전하게 보관하세요. 곧 필요할 것입니다.

Databricks 호스트 찾기

Databricks 컴퓨팅 리소스에 연결하려면 Databricks 호스트명을 지정해야 합니다. 이는 Databricks 계정과 연결된 기본 URL에 해당하며 다음과 같은 형식입니다:

https://<무작위 문자열>.cloud.databricks.com

Databricks 대시보드 URL에서 직접 복사하여 이 정보를 확인할 수 있습니다:

Bright Data 데이터셋 접근 권한 획득

이제 API, CLI 또는 SQL 커넥터를 통해 쿼리할 수 있도록 하나 이상의 Bright Data 데이터 세트를 Databricks 계정에 추가해야 합니다.

“마켓플레이스” 페이지로 이동하여 왼쪽의 설정 버튼을 클릭하고 관심 있는 유일한 공급자로 “Bright Data”를 선택하세요:

Selecting the “Bright Data” provider

이렇게 하면 사용 가능한 데이터 제품이 Bright Data에서 제공하고 Databricks를 통해 접근 가능한 제품으로만 필터링됩니다.

이 예시에서는 “Zillow Properties Information Dataset“에 관심이 있다고 가정합니다:

The Bright Data “Zillow Properties Information Dataset” product on Databricks

데이터셋 카드를 클릭하고 “Zillow Properties Information Dataset” 페이지에서 “Get Instances Access”를 눌러 Databricks 계정에 추가하세요:

Pressing the “Get instant access” button

데이터셋이 계정에 추가되면 Databricks SQL을 통해 쿼리할 수 있습니다. 해당 데이터의 출처가 궁금하다면, 답은 Bright Data의 Zillow 데이터셋입니다.

“SQL 편집기” 페이지로 이동하여 다음과 같은 SQL 쿼리로 데이터셋을 조회하여 확인하세요:

SELECT * FROM bright_data_zillow_properties_information_dataset.datasets.zillow_properties
WHERE state LIKE 'NY' AND homestatus LIKE 'FOR_SALE' 
LIMIT 10;

결과는 다음과 같을 것입니다:

The result produced by the SQL query

훌륭합니다! 선택한 Bright Data 데이터셋을 성공적으로 추가하고 Databricks를 통해 쿼리 가능하게 만들었습니다. 동일한 단계를 따라 다른 Bright Data 데이터셋도 추가할 수 있습니다.

다음 섹션에서는 이 데이터셋을 쿼리하는 방법을 배웁니다:

  • Databricks REST API를 통해
  • Python용 Databricks SQL 커넥터를 사용하여
  • Databricks CLI를 통해

Databricks REST API를 통해 Bright Data 데이터셋 쿼리하는 방법

Databricks는 REST API를 통해 일부 기능을 노출하며, 여기에는 계정에서 사용 가능한 데이터셋을 쿼리하는 기능도 포함됩니다. 아래 단계를 따라 Bright Data에서 제공하는 “Zillow Properties Information Dataset”을 프로그래밍 방식으로 쿼리하는 방법을 확인하세요.

참고: 아래 코드는 Python으로 작성되었지만, 다른 프로그래밍 언어로 쉽게 변환하거나 cURL을 통해 Bash에서 직접 호출할 수 있습니다.

1단계: 필수 라이브러리 설치

원격 Databricks 웨어하우스에서 SQL 쿼리를 실행하려면 /api/2.0/sql/statements REST API 엔드포인트를 사용합니다. 모든 HTTP 클라이언트를 통해 POST 요청으로 호출할 수 있습니다. 이 예제에서는 Python Requests 라이브러리를 사용합니다.

설치 방법:

pip install requests

다음으로 스크립트에서 라이브러리를 임포트합니다:

import requests

자세한 내용은 Python Requests 전용 가이드에서 확인하세요.

2단계: Databricks 자격 증명 및 시크릿 준비

HTTP 클라이언트를 사용하여 Databricks REST API 엔드포인트 /api/2.0/sql/statements를 호출하려면 다음을 지정해야 합니다:

  • Databricks 액세스 토큰: 인증용
  • Databricks 호스트: 완전한 API URL을 구성하기 위해.
  • Databricks 웨어하우스 ID: 올바른 웨어하우스의 올바른 테이블을 쿼리하기 위해.

이전에 검색한 시크릿을 다음과 같이 스크립트에 추가하세요:

databricks_access_token = "<YOUR_DATABRICKS_ACCESS_TOKEN>"
databricks_warehouse_id = "<YOUR_DATABRICKS_WAREHOUSE_ID>"
databricks_host = "<YOUR_DATABRICKS_HOST>"

: 실제 운영 환경에서는 이러한 시크릿을 스크립트에 하드코딩하지 마십시오. 대신 보안 강화를 위해 환경 변수에 자격 증명을 저장하고 python-dotenv를 사용하여 로드하는 것을 고려하십시오.

3단계: SQL 문 실행 API 호출

Requests를 사용하여 적절한 헤더와 본문을 포함해 /api/2.0/sql/statements 엔드포인트로 POST HTTP 호출 을 수행합니다:

# 지정된 데이터셋에서 실행할 매개변수화된 SQL 쿼리
sql_query = """
SELECT *
FROM bright_data_zillow_properties_information_dataset.datasets.zillow_properties
WHERE state LIKE :state AND homestatus LIKE :homestatus
LIMIT :row_limit;
"""
# SQL 쿼리에 채워질 매개변수
parameters = [
    {"name": "state", "value": "NY", "type": "STRING"},
    {"name": "homestatus", "value": "FOR_SALE", "type": "STRING"},
    {"name": "row_limit", "value": "10", "type": "INT"}
]

# POST 요청을 수행하고 데이터셋을 쿼리
headers = {
    "Authorization": f"Bearer {databricks_access_token}", # Databricks 인증용
    "Content-Type": "application/json"
}

payload = {
    "statement": sql_query,
    "warehouse_id": databricks_warehouse_id,
    "parameters": parameters
}

response = requests.post(
    f"{databricks_host}/api/2.0/sql/statements",
    headers=headers,
    data=json.dumps(payload)
)

위 코드 조각은 미리 준비된 SQL 문장을 사용합니다. 문서에서 강조한 바와 같이, Databricks는 SQL 문장의 모범 사례로 매개변수화된 쿼리 사용을 강력히 권장합니다.

다시 말해, 위 스크립트를 실행하는 것은 bright_data_zillow_properties_information_dataset.datasets.zillow_properties 테이블에서 다음과 같은 쿼리를 실행하는 것과 동일합니다. 이전에 수행했던 것과 마찬가지로:

SELECT * FROM bright_data_zillow_properties_information_dataset.datasets.zillow_properties
WHERE state LIKE 'NY' AND homestatus LIKE 'FOR_SALE' 
LIMIT 10;

훌륭합니다! 이제 출력 데이터만 관리하면 됩니다.

단계 #4: 쿼리 결과 내보내기

다음 Python 로직으로 응답을 처리하고 검색된 데이터를 내보냅니다:

if response.status_code == 200:
    # 출력 JSON 데이터 접근
    result = response.json()

    # 검색된 데이터를 JSON 파일로 내보내기
    output_file = "zillow_properties.json"
    with open(output_file, "w", encoding="utf-8") as f:
        json.dump(result, f, indent=4)
    print(f"쿼리 성공! 결과가 '{output_file}'에 저장됨")
else:
    print(f"오류 {response.status_code}: {response.text}")

요청이 성공하면 이 코드 조각은 쿼리 결과를 포함하는 zillow_properties.json 파일을 생성합니다.

단계 #5: 모든 것을 통합하기

최종 스크립트에는 다음이 포함되어야 합니다:

import requests
import json

# Databricks 자격 증명 (적절한 값으로 대체)
databricks_access_token = "<YOUR_DATABRICKS_ACCESS_TOKEN>"
databricks_warehouse_id = "<YOUR_DATABRICKS_WAREHOUSE_ID>"
databricks_host = "<YOUR_DATABRICKS_HOST>"

# 지정된 데이터셋에서 실행할 매개변수화된 SQL 쿼리
sql_query = """
SELECT *
FROM bright_data_zillow_properties_information_dataset.datasets.zillow_properties
WHERE state LIKE :state AND homestatus LIKE :homestatus
LIMIT :row_limit;
"""
# SQL 쿼리에 채울 매개변수
parameters = [
    {"name": "state", "value": "NY", "type": "STRING"},
    {"name": "homestatus", "value": "FOR_SALE", "type": "STRING"},
    {"name": "row_limit", "value": "10", "type": "INT"}
]

# POST 요청을 수행하고 데이터셋을 쿼리
headers = {
    "Authorization": f"Bearer {databricks_access_token}", # Databricks 인증용
    "Content-Type": "application/json"
}

payload = {
    "statement": sql_query,
    "warehouse_id": databricks_warehouse_id,
    "parameters": parameters
}

response = requests.post(
    f"{databricks_host}/api/2.0/sql/statements",
    headers=headers,
    data=json.dumps(payload)
)

# 응답 처리
if response.status_code == 200:
    # 출력 JSON 데이터 접근
    result = response.json()

    # 검색된 데이터를 JSON 파일로 내보내기
    output_file = "zillow_properties.json"
    with open(output_file, "w", encoding="utf-8") as f:
        json.dump(result, f, indent=4)
    print(f"쿼리 성공! 결과가 '{output_file}'에 저장되었습니다")
else:
    print(f"오류 {response.status_code}: {response.text}")

실행하면 프로젝트 디렉터리에 zillow_properties.json 파일이 생성됩니다.

출력 결과는 먼저 사용 가능한 열을 이해하는 데 도움이 되는 열 구조를 포함합니다. 그런 다음 data_array 필드에서 결과 쿼리 데이터를 JSON 문자열로 확인할 수 있습니다:

A portion of the data_array field

미션 완료! Bright Data가 Databricks REST API를 통해 제공하는 Zillow 부동산 데이터를 수집했습니다.

Databricks CLI를 사용하여 Bright Data 데이터셋에 접근하는 방법

Databricks는 내부적으로 REST API를 기반으로 하는 Databricks CLI를 통해 웨어하우스 내 데이터를 쿼리할 수도 있습니다. 사용 방법을 알아보세요!

1단계: Databricks CLI 설치

Databricks CLI는 터미널에서 직접 Databricks 플랫폼과 상호작용할 수 있는 오픈소스 명령줄 도구입니다.

설치하려면 운영 체제에 맞는 설치 가이드를 따르세요. 모든 설정이 올바르게 완료되었다면, ` databricks -v ` 명령어를 실행하면 다음과 같은 결과가 표시됩니다:

The output of the “databricks -v” command

완벽합니다!

2단계: 인증을 위한 구성 프로필 정의

Databricks CLI를 사용하여 개인 액세스 토큰으로 인증하는 'DEFAULT' 구성 프로필을 생성합니다. 다음 명령어를 실행하세요:

databricks configure --profile DEFAULT

그러면 다음 정보를 입력하라는 메시지가 표시됩니다:

  1. Databricks 호스트
  2. Databricks 액세스 토큰

두 값을 모두 붙여넣고 Enter 키를 눌러 구성을 완료하세요:

Setting up your Databricks configuration profile

이제 --profile DEFAULT 옵션을 지정하여 CLI API 명령어 인증이 가능합니다.

3단계: 데이터셋 쿼리 실행

다음 CLI 명령을 사용하여 API POST 명령을 통해 매개변수화된 쿼리를 실행하세요:

databricks api post "/api/2.0/sql/statements" 
--profile DEFAULT 
--json '{
  "warehouse_id": "<YOUR_DATABRICKS_WAREHOUSE_ID>",
  "statement": "SELECT * FROM bright_data_zillow_properties_information_dataset.datasets.zillow_properties WHERE state LIKE :state AND homestatus LIKE :homestatus LIMIT :row_limit",
  "parameters": [
    { "name": "state", "value": "NY", "type": "STRING" },
    { "name": "homestatus", "value": "FOR_SALE", "type": "STRING" },
    { "name": "row_limit", "value": "10", "type": "INT" }
  ]
}' 
> zillow_properties.json

<YOUR_DATABRICKS_WAREHOUSE_ID> 자리 표시자를 실제 Databricks SQL 웨어하우스 ID로 대체하십시오.

이 작업은 Python에서 수행했던 것과 동일한 작업을 백그라운드에서 수행합니다. 구체적으로 Databricks REST SQL API에 POST 요청을 보냅니다. 결과는 이전에 보았던 것과 동일한 데이터를 포함하는 zillow_properties.json 파일입니다:

The output  zillow_properties.json file

Databricks SQL 커넥터를 통해 Bright Data에서 데이터셋을 쿼리하는 방법

Databricks SQL 커넥터는 Databricks 클러스터 및 SQL 웨어하우스에 연결할 수 있는 Python 라이브러리입니다. 특히 Databricks 인프라에 연결하고 데이터를 탐색하기 위한 간소화된 API를 제공합니다.

이 가이드 섹션에서는 Bright Data의 “Zillow Properties Information Dataset”을 쿼리하는 방법을 배웁니다.

1단계: Python용 Databricks SQL 커넥터 설치

Databricks SQL 커넥터는 databricks-sql-connector Python 라이브러리를 통해 사용할 수 있습니다. 다음 명령어로 설치하세요:

pip install databricks-sql-connector

그런 다음 스크립트에서 다음과 같이 임포트하세요:

from databricks import sql

2단계: Databricks SQL 커넥터 시작하기

Databricks SQL 커넥터는 REST API 및 CLI와 다른 자격 증명이 필요합니다. 구체적으로 다음이 필요합니다:

  • server_hostname: Databricks 호스트 이름( https:// 부분 제외).
  • http_path: 웨어하우스에 연결하기 위한 특수 URL.
  • access_token: Databricks 액세스 토큰.

필요한 인증 값과 샘플 시작 코드 조각은 SQL 웨어하우스의 “연결 세부 정보” 탭에서 확인할 수 있습니다:

Clicking the Python button on the “Connection Details” of your warehouse

“Python” 버튼을 누르면 다음과 같은 내용이 표시됩니다:

The databricks-sql-connector sample snippet

이것이 databricks-sql-connector를 시작하는 데 필요한 모든 지침입니다.

3단계: 모든 것을 통합하기

“Python용 Databricks SQL 커넥터” 섹션의 샘플 코드 스니펫을 자신의 웨어하우스에 맞게 수정하여 원하는 매개변수화된 쿼리를 실행하세요. 다음과 같은 스크립트를 완성해야 합니다:

from databricks import sql

# Databricks의 SQL 웨어하우스에 연결 (자격 증명을 본인 값으로 대체)
connection = sql.connect(
    server_hostname = "<YOUR_DATABRICKS_HOST>",
    http_path = "<YOUR_DATABRICKS_WAREHOUSE_HTTP_PATH>",
    access_token = "<YOUR_DATABRICKS_ACCESS_TOKEN>"
)

# 매개변수화된 SQL 쿼리를 실행하고 커서로 결과를 가져옵니다
cursor = connection.cursor()

sql_query = """
SELECT *
FROM bright_data_zillow_properties_information_dataset.datasets.zillow_properties
WHERE state LIKE :state AND homestatus LIKE :homestatus
LIMIT :row_limit
"""

params = {
    "state": "NY",
    "homestatus": "FOR_SALE",
    "row_limit": 10
}

# 쿼리 실행
cursor.execute(sql_query, params)

result = cursor.fetchall()
# 결과 전체를 한 행씩 출력
for row in result[:2]:
  print(row)

# 커서 및 SQL 웨어하우스 연결 종료
cursor.close()
connection.close()

스크립트를 실행하면 다음과 같은 출력이 생성됩니다:

The output data for a single row

row 객체는 Row 인스턴스로, 쿼리 결과의 단일 레코드를 나타냅니다. 이 데이터를 Python 스크립트에서 직접 처리할 수 있습니다.

asDict() 메서드를 사용하면 Row 인스턴스를 Python 사전으로 변환할 수 있다는 점을 기억하세요:

row_data = row.asDict()

자, 이제 Databricks에서 Bright Data 데이터셋을 다양한 방식으로 쿼리하고 상호작용하는 방법을 알게 되었습니다.

결론

이 글에서는 Databricks의 REST API, CLI 또는 전용 SQL 커넥터 라이브러리를 사용하여 Bright Data의 데이터셋을 쿼리하는 방법을 알아보았습니다. 시연된 바와 같이, Databricks는 Bright Data를 포함한 데이터 공급업체가 제공하는 제품과 상호작용할 수 있는 다양한 방법을 제공합니다.

40개 이상의 제품을 통해 Databricks 내에서 직접 Bright Data의 방대한 데이터셋을 탐색하고 다양한 방식으로 데이터에 접근할 수 있습니다.

Bright Data 계정을 무료로 생성하고 오늘 바로 데이터 솔루션 실험을 시작해 보세요!