如何在AWS Glue中默认列值以及如何将输入文件名传递给AWS Glue

时间:2019-05-22 23:51:26

标签: amazon-web-services amazon-redshift aws-glue aws-glue-data-catalog

我有一张桌子:

trxn_dtl (
internal_key INT NOT NULL identity(1,1), 
Co_Typ VARCHAR(32) ,
Co_ID VARCHAR(8) ,
Curr VARCHAR(3) , 
Prod_Cd VARCHAR(16) DEFAULT “SP” , 
Dr_Amt DECIMAL (20,6) DEFAULT 0,
Cr_Amt DECIMAL (20,6) DEFAULT 0, 
Ins_By VARCHAR(20) NOT NULL DEFAULT CURRENT_USER,
Ins_DtTime TIMESTAMP   NOT NULL DEFAULT SYSDATE, 
Upd_By VARCHAR(20) NOT NULL DEFAULT CURRENT_USER,
 Upd_DtTime TIMESTAMP NOT NULL DEFAULT SYSDATE, 
) 
DISTSTYLE EVEN ; 

使用粘合作业,我正在从特定的csv文件插入数据。

问题1:我想根据特定的输入文件对AWS Glue作业进行参数化,该作业应该运行。我从控制台运行胶水作业时使用了以下值。但是它考虑了S3存储桶文件夹中的所有文件。

--input_file_path    "s3://XXXXXX/txn_dtl_20190417_042000PM.csv"

问题2::输入文件没有审核列( ins_by, ins_dttime, upd_by, upd_dttime)。因此,胶水作业出错。有没有办法在NULL的情况下插入默认值?

尝试以下pyspark代码,但没有运气:

AuditDefaultdDf2 = AuditDefaultdDf1.toDF().withColumn("ins_by", CURRENT_USER()))
AuditDefaultdDf3 = AuditDefaultdDf2.toDF().withColumn("upd_by", CURRENT_USER()))
timestampedDf1 = AuditDefaultdDf3.toDF().withColumn("ins_dttime", current_timestamp())
timestampedDf2 = timestampedDf1.toDF().withColumn("upd_dttime", current_timestamp()) 
#resolvechoice6 = DynamicFrame.fromDF(timestampedDf3, glueContext, "timestampedDf3")

0 个答案:

没有答案