다음을 통해 공유


Databricks JDBC 드라이버를 사용하여 볼륨의 파일 관리

Databricks는 사용자가 CSV 파일과 같은 로컬 파일 간에 데이터 세트를 전송할 수 있는 Unity 카탈로그 볼륨을 사용하여 대량 수집 기능을 제공합니다. Unity 카탈로그 볼륨이란 무엇인가?를 참조하십시오.

이 문서에서는 Databricks JDBC 드라이버 버전 3 이상을 사용하여 볼륨의 파일을 관리하고 볼륨에서 스트림을 읽고 쓰는 방법을 설명합니다.

볼륨 작업 활성화

Unity 카탈로그 볼륨 작업을 사용하도록 설정하려면 연결 속성 VolumeOperationAllowedLocalPaths 볼륨 작업에 허용되는 로컬 경로의 쉼표로 구분된 목록으로 설정합니다. 기타 기능 속성 참조

이 기능을 사용하려면 Unity 카탈로그를 사용하도록 설정해야 합니다. Databricks UI를 사용하여 비슷한 기능을 사용할 수 있습니다. Unity Catalog 볼륨에 파일 업로드를 참조하세요.

Unity 카탈로그 수집 명령은 SQL 문입니다. 아래 예제에서는 PUT, GET및 REMOVE 작업을 보여 줍니다.

로컬 파일 업로드

로컬 파일 /tmp/test.csv을 Unity 카탈로그 볼륨 경로 /Volumes/main/default/e2etests/file1.csv에 업로드하려면 PUT 작업을 사용하십시오.

  PUT '/tmp/test.csv' INTO '/Volumes/main/default/e2etests/file1.csv' OVERWRITE

파일 다운로드

Unity 카탈로그 볼륨 경로 /Volumes/main/default/e2etests/file1.csv에서 로컬 파일 /tmp/test.csv로 파일을 다운로드하려면 GET 작업을 사용합니다.

  GET '/Volumes/main/default/e2etests/file1.csv' TO '/tmp/test.csv'

파일 삭제

Unity 카탈로그 볼륨 경로가 /Volumes/main/default/e2etests/file1.csv파일을 삭제하려면 REMOVE 작업을 사용합니다.

  REMOVE '/Volumes/main/default/e2etests/file1.csv'

스트림을 사용하여 데이터 읽기/쓰기

JDBC 드라이버는 인터페이스 IDatabricksVolumeClient를 제공하여 Unity 카탈로그 볼륨에서 데이터를 읽고 쓰는 스트리밍을 지원합니다. 사용 가능한 API는 IDatabricksVolumeClient 참조 를 참조하세요.

IDatabricksVolumeClientDatabricksVolumeClientFactory 팩터리 유틸리티를 사용하여 초기화할 수 있습니다.

import com.databricks.jdbc.api.impl.volume.DatabricksVolumeClientFactory;
import com.databricks.jdbc.api.volume.IDatabricksVolumeClient;

IDatabricksVolumeClient volumeClient = DatabricksVolumeClientFactory.getVolumeClient(Connection conn);

스트림에서 볼륨에 파일 쓰기

// Create the connection and enable the volume operations.
Connection connection = DriverManager.getConnection(url, prop);
connection.setClientInfo("enableVolumeOperations", "1");
File file = new File("/tmp/test.csv");
FileInputStream fileInputStream = new FileInputStream(file);

// Upload the file stream to UC Volume path
IDatabricksVolumeClient volumeClient = DatabricksVolumeClientFactory.getVolumeClient(Connection conn);
volumeClient.putObject(catalog, schema, volume, objectPath, inputStream, contentLength, true /* overwrite */);

볼륨 파일을 스트림으로 읽기

import org.apache.http.entity.InputStreamEntity;

// Create the connection and enable the volume operations.
Connection connection = DriverManager.getConnection(url, prop);
connection.setClientInfo("enableVolumeOperations", "1");
File file = new File("/tmp/test.csv");
FileInputStream fileInputStream = new FileInputStream(file);

// Upload the file stream to UC Volume path
IDatabricksVolumeClient volumeClient = DatabricksVolumeClientFactory.getVolumeClient(Connection conn);
InputStreamEntity volumeDataStream = volumeClient.getObject(catalog, schema, volume, objectPath);