기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Redshift에서 읽고 쓰기
다음 코드 예제는 데이터 소스 API와 SparkSQL을 통해 Amazon Redshift 데이터베이스에서 샘플 데이터를 읽고 쓰는 데 PySpark를 사용합니다.
- Data source API
-
PySpark를 사용하여 데이터 소스 API를 통해 Amazon Redshift 데이터베이스에서 샘플 데이터를 읽고 씁니다.
import boto3 from pyspark.sql import SQLContext sc = # existing SparkContext sql_context = SQLContext(sc) url = "jdbc:redshift:iam://redshifthost:5439/database" aws_iam_role_arn = "arn:aws:iam::
account-id
:role/role-name
" df = sql_context.read \ .format("io.github.spark_redshift_community.spark.redshift") \ .option("url",url
) \ .option("dbtable", "table-name
") \ .option("tempdir", "s3://path/for/temp/data
") \ .option("aws_iam_role", "aws-iam-role-arn
") \ .load() df.write \ .format("io.github.spark_redshift_community.spark.redshift") \ .option("url",url
) \ .option("dbtable", "table-name-copy
") \ .option("tempdir", "s3://path/for/temp/data
") \ .option("aws_iam_role", "aws-iam-role-arn
") \ .mode("error") \ .save() - SparkSQL
-
PySpark를 사용하여 SparkSQL을 통해 Amazon Redshift 데이터베이스에서 샘플 데이터를 읽고 씁니다.
import boto3 import json import sys import os from pyspark.sql import SparkSession spark = SparkSession \ .builder \ .enableHiveSupport() \ .getOrCreate() url = "jdbc:redshift:iam://redshifthost:5439/database" aws_iam_role_arn = "arn:aws:iam::
account-id
:role/role-name
" bucket = "s3://path/for/temp/data
" tableName = "table-name
" # Redshift table name s = f"""CREATE TABLE IF NOT EXISTS {table-name
} (country string, data string) USING io.github.spark_redshift_community.spark.redshift OPTIONS (dbtable '{table-name
}', tempdir '{bucket
}', url '{url
}', aws_iam_role '{aws-iam-role-arn
}' ); """ spark.sql(s) columns = ["country" ,"data"] data = [("test-country
","test-data
")] df = spark.sparkContext.parallelize(data).toDF(columns) # Insert data into table df.write.insertInto(table-name
, overwrite=False) df = spark.sql(f"SELECT * FROM {table-name
}") df.show()
Amazon Redshift에 대한 인증
고려 사항