[英]AWS Glue - Truncate destination postgres table prior to insert
我試圖在插入之前截斷一個 postgres 目標表,一般來說,我試圖利用已經在 GLUE 中創建的連接來觸發外部函數。
有沒有人能夠這樣做?
我已經嘗試過DROP/ TRUNCATE
場景,但無法使用已經在 Glue 中創建的連接,而是使用純 Python PostgreSQL 驅動程序pg8000 來實現。
__init__.py
Python lib path
中的 zip 文件--
)。 勾選“服務器端加密”框。然后您可以簡單地創建一個連接並執行 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()
在遵循@thenaturalist 回復的步驟(4)之后,
sc.addPyFile("/home/glue/downloads/python/pg8000.zip")
import pg8000
在開發端點為我工作(zeppelin notebook)
更多信息: https ://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html
data=spark.sql(sql)
conf = glueContext.extract_jdbc_conf("jdbc-commerce")
data.write \
.mode('overwrite') \
.format("jdbc") \
.option("url", conf['url']) \
.option("database", 'Pacvue_Commerce') \
.option("dbtable", "dbo.glue_1") \
.option("user", conf['user']) \
.option('truncate','true') \
.option("password", conf['password']) \
.save()
膠水 api 不支持,但 spark api 支持。
jdbc-commerce 是您在爬網時的連接名稱。 使用extract_jdbc_conf獲取url、用戶名和密碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.