Important
Microsoft SQL Server 2019 빅 데이터 클러스터는 사용 중지되었습니다. SQL Server 2019 빅 데이터 클러스터에 대한 지원은 2025년 2월 28일부터 종료되었습니다. 자세한 내용은 Microsoft SQL Server 플랫폼의 공지 블로그 게시물 및 빅 데이터 옵션을 참조하세요.
SQL Server 및 Azure SQL용 Apache Spark 커넥터는 빅 데이터 분석에서 트랜잭션 데이터를 사용하고 임시 쿼리 또는 보고를 위해 결과를 유지할 수 있는 고성능 커넥터입니다. 커넥터를 사용하면 온-프레미스 또는 클라우드의 모든 SQL 데이터베이스를 Spark 작업의 입력 데이터 원본 또는 출력 데이터 싱크로 사용할 수 있습니다. 커넥터는 SQL Server 대량 쓰기 API를 사용합니다. 모든 대량 쓰기 매개 변수는 사용자가 선택적 매개 변수로 전달될 수 있으며 커넥터에서 as-is 기본 API로 전달됩니다. 대량 쓰기 작업에 대한 자세한 내용은 JDBC 드라이버에서 대량 복사 사용을 참조하세요.
커넥터는 SQL Server 빅 데이터 클러스터에 기본적으로 포함됩니다.
오픈 소스 리포지토리에서 커넥터에 대해 자세히 알아봅니다. 예제는 샘플을 참조하세요.
새 SQL 테이블에 쓰기
Caution
overwrite 모드에서는 기본적으로 데이터베이스에 이미 존재하는 경우 커넥터가 먼저 테이블을 삭제합니다. 예기치 않은 데이터 손실을 방지하려면 주의하여 이 옵션을 사용합니다.
모드 overwrite 를 사용하는 경우 옵션을 truncate사용하지 않으면 테이블을 다시 만들 때 인덱스가 손실됩니다. 예를 들어, 컬럼스토어 테이블은 힙으로 변환됩니다. 기존 인덱싱을 유지하려면 값을 truncate가진 옵션 true 도 지정하세요. 예: .option("truncate",true)
server_name = "jdbc:sqlserver://{SERVER_ADDR}"
database_name = "database_name"
url = server_name + ";" + "databaseName=" + database_name + ";"
table_name = "table_name"
username = "username"
password = "password123!#" # Please specify password here
try:
df.write \
.format("com.microsoft.sqlserver.jdbc.spark") \
.mode("overwrite") \
.option("url", url) \
.option("dbtable", table_name) \
.option("user", username) \
.option("password", password) \
.save()
except ValueError as error :
print("Connector write failed", error)
SQL 테이블에 추가
try:
df.write \
.format("com.microsoft.sqlserver.jdbc.spark") \
.mode("append") \
.option("url", url) \
.option("dbtable", table_name) \
.option("user", username) \
.option("password", password) \
.save()
except ValueError as error :
print("Connector write failed", error)
격리 수준 지정
기본적으로 이 커넥터는 데이터베이스에 대량 삽입을 수행할 때 READ_COMMITTED 격리 수준을 사용합니다. 이를 다른 격리 수준으로 재정의하려면 아래와 같이 옵션을 사용 mssqlIsolationLevel 하세요.
.option("mssqlIsolationLevel", "READ_UNCOMMITTED") \
SQL 테이블에서 읽기
jdbcDF = spark.read \
.format("com.microsoft.sqlserver.jdbc.spark") \
.option("url", url) \
.option("dbtable", table_name) \
.option("user", username) \
.option("password", password).load()
비활성 디렉터리 모드
비 Active Directory 모드 보안에서 각 사용자에게는 읽기 및/또는 쓰기를 수행하기 위해 커넥터 인스턴스화 중에 매개 변수로 제공해야 하는 사용자 이름과 암호가 있습니다.
비 Active Directory 모드에 대한 커넥터 인스턴스화 예제는 다음과 같습니다. 스크립트를 실행하기 전에 ?를 계정의 값으로 바꾸십시오.
# Note: '?' is a placeholder for a necessary user-specified value
connector_type = "com.microsoft.sqlserver.jdbc.spark"
url = "jdbc:sqlserver://master-p-svc;databaseName=?;"
writer = df.write \
.format(connector_type)\
.mode("overwrite")
.option("url", url) \
.option("user", ?) \
.option("password",?)
writer.save()
Active Directory 모드
Active Directory 모드 보안에서 사용자가 키 탭 파일을 생성한 후에는 커넥터 인스턴스화 중에 principal 및 keytab을/를 매개변수로 지정해야 합니다.
이 모드에서 드라이버는 keytab 파일을 해당 실행기 컨테이너에 로드합니다. 그런 다음 실행자는 주체 이름과 keytab을 사용하여 읽기/쓰기 작업에 사용할 JDBC 커넥터를 위한 토큰을 생성합니다.
Active Directory 모드에 대한 커넥터 인스턴스화 예제는 다음과 같습니다. 스크립트를 실행하기 전에 ?를 계정의 값으로 바꾸십시오.
# Note: '?' is a placeholder for a necessary user-specified value
connector_type = "com.microsoft.sqlserver.jdbc.spark"
url = "jdbc:sqlserver://master-p-svc;databaseName=?;integratedSecurity=true;authenticationScheme=JavaKerberos;"
writer = df.write \
.format(connector_type)\
.mode("overwrite")
.option("url", url) \
.option("principal", ?) \
.option("keytab", ?)
writer.save()
Next steps
빅 데이터 클러스터에 대한 자세한 내용은 Kubernetes에 SQL Server 빅 데이터 클러스터를 배포하는 방법을 참조하세요.
SQL Server 빅 데이터 클러스터에 대한 피드백 또는 기능 권장 사항이 있나요? SQL Server 빅 데이터 클러스터 피드백에 메모를 남겨 주세요.