반응형
이번엔 SAP HANA CLOUD 데이터를 가져와본다.
전달받은 접속정보는 URL이고, 포트는 443 이어서 당황했다.
하지만 접속은 어렵지않았다.
hdbcli 를 통해서도 동일하게 처리가 가능했다.
이번에는 데이터 사이즈가 큰 경우에 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()
반응형
'AWS' 카테고리의 다른 글
AWS DMS(Data Migration Service)를 사용하여 Aurora PostgreSQL 를 AWS S3에 날짜 기준으로 파티셔닝 하여 적재 (0) | 2023.02.23 |
---|---|
AWS Glue로 S3 에 저장된 parquet 파일 읽어보기 (0) | 2023.01.05 |
AWS Glue에서 hdbcli 를 이용해 SAP BW 데이터를 S3에 저장하기 (0) | 2023.01.04 |
AWS Glue에서 Spark를 이용해 MSSQL 데이터를 S3에 파티션 구조로 저장하기 (0) | 2023.01.02 |
AWS Glue에서 Spark를 이용해 MSSQL 데이터를 S3에 저장하기 (0) | 2022.12.26 |