Tôi đã thử DROP/ TRUNCATE
nhưng không thể thực hiện được với các kết nối đã được tạo trong Glue, nhưng với trình điều khiển Python PostgreSQL thuần túy, pg8000
.
- Tải xuống tar của pg8000 từ pypi
- Tạo một
__init__.py
trống trong thư mục gốc - Giải nén nội dung và tải lên S3
- Tham chiếu tệp zip trong
Python lib path
của công việc - Đặt chi tiết kết nối DB làm thông số công việc (đảm bảo thêm trước tất cả các tên khóa bằng
--
). Đánh dấu vào hộp "Mã hóa phía máy chủ".
Sau đó, bạn có thể chỉ cần tạo kết nối và thực thi SQL.
import sys
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.dynamicframe import DynamicFrame
from awsglue.job import Job
import pg8000
args = getResolvedOptions(sys.argv, [
'JOB_NAME',
'PW',
'HOST',
'USER',
'DB'
])
# ...
# Create Spark & Glue context
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
# ...
config_port = 5432
conn = pg8000.connect(
database=args['DB'],
user=args['USER'],
password=args['PW'],
host=args['HOST'],
port=config_port
)
query = "TRUNCATE TABLE {0};".format(".".join([schema, table]))
cur = conn.cursor()
cur.execute(query)
conn.commit()
cur.close()
conn.close()