중요합니다
Microsoft SQL Server 2019 빅 데이터 클러스터 추가 기능이 사용 중지됩니다. SQL Server 2019 빅 데이터 클러스터에 대한 지원은 2025년 2월 28일에 종료됩니다. Software Assurance를 사용하는 SQL Server 2019의 모든 기존 사용자는 플랫폼에서 완전히 지원되며, 소프트웨어는 지원 종료 시점까지 SQL Server 누적 업데이트를 통해 계속 유지 관리됩니다. 자세한 내용은 공지 블로그 게시물 및 Microsoft SQL Server 플랫폼의 빅 데이터 옵션을 참조하세요.
SQL Server 및 Azure SQL용 Apache Spark 커넥터는 빅 데이터 분석에서 트랜잭션 데이터를 사용하고 임시 쿼리 또는 보고를 위해 결과를 유지할 수 있는 고성능 커넥터입니다. 커넥터를 사용하면 온-프레미스 또는 클라우드의 모든 SQL 데이터베이스를 Spark 작업의 입력 데이터 원본 또는 출력 데이터 싱크로 사용할 수 있습니다. 커넥터는 SQL Server 대량 쓰기 API를 사용합니다. 모든 대량 쓰기 매개 변수는 사용자가 선택적 매개 변수로 전달될 수 있으며 커넥터에서 as-is 기본 API로 전달됩니다. 대량 쓰기 작업에 대한 자세한 내용은 JDBC 드라이버에서 대량 복사 사용을 참조하세요.
커넥터는 SQL Server 빅 데이터 클러스터에 기본적으로 포함됩니다.
오픈 소스 리포지토리에서 커넥터에 대해 자세히 알아봅니다. 예제는 샘플을 참조하세요.
새 SQL 테이블에 쓰기
주의
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()
다음 단계
빅 데이터 클러스터에 대한 자세한 내용은 Kubernetes에 SQL Server 빅 데이터 클러스터를 배포하는 방법을 참조하세요.
SQL Server 빅 데이터 클러스터에 대한 피드백 또는 기능 권장 사항이 있나요? SQL Server 빅 데이터 클러스터 피드백에 메모를 남겨 주세요.