AWS

AWS Glue에서 ngdbc 를 이용해 SAP HANA CLOUD 데이터를 S3에 저장하기

whistory 2023. 1. 4. 11:00
반응형

 

이번엔 SAP HANA CLOUD 데이터를 가져와본다.

 

전달받은 접속정보는 URL이고, 포트는 443 이어서 당황했다.

하지만 접속은 어렵지않았다.

 

 

hdbcli 를 통해서도 동일하게 처리가 가능했다.

https://whiseung.tistory.com/entry/AWS-Glue%EC%97%90%EC%84%9C-hdbcli-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-SAP-BW-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-S3%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0

 

AWS Glue에서 hdbcli 를 이용해 SAP BW 데이터를 S3에 저장하기

SAP BW 에서도 데이터를 가져와 했다. SAP은 처음이다. (RFC와 ODATA는 해봤지만) SAP 엔지니어가 jdbc를 통해 SAP에 붙을 수 있도록 환경 설정을 해주었다. hdbcli 라이브러를 이용해 접속을 해보려고한다.

whiseung.tistory.com

 

 

 

 

이번에는 데이터 사이즈가 큰 경우에 timeout 이 발생하기때문에,

pyspark 으로 처리하는 케이스이다.

 

ngdbc 를 다운받아 S3에 올리고.

 

Glue에서

[Advanced properties] - [Dependent JARs path] 에 업로드한 jar 파일의 경로를 입력해준다.

 

s3://bucket_name/ngdbc-2.10.19.jar

 

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from awsglue import DynamicFrame

## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

## database information
dbHost = 'dbhost'
port = '443'
server_name = "jdbc:sap://{}:{}".format(dbHost, port)
dbUser = 'user'
dbPwd = 'password'

jdbcDF = spark.read \
        .format("jdbc") \
        .option("url", server_name) \
        .option("user", dbUser) \
        .option("password", dbPwd) \
        .option("dbtable", "DB.TABLE").load()

#jdbcDF.show()
## s3 bucket information
bucket_name = "bucket_name"
target = "prefix"
database_name = "DB"
table_name = "TABLE"

jdbcDF.write.format('parquet').mode("overwrite").save(f"s3://{bucket_name}/{target_name}/{database_name}/{table_name}/")
print(f"upload path 1 = s3://{bucket_name}/{target_name}/{database_name}/{table_name}/")

job = Job(glueContext)
job.init(args['JOB_NAME'], args)

job.commit()

 

 

반응형