在DynamicFrames上重命名AWS Glue多列

时间:2018-07-31 20:59:51

标签: aws-glue

文档未指定是否允许这样做,但是我似乎无法使其正常工作,而且一遍又一遍地链接多个DF并不是很干净。

例如

    df1= RenameField.apply(frame = df, old_name = "col1",new_name = "COL1")
df2= RenameField.apply(frame = df1, old_name = "col2", new_name = "COL2") 

我尝试了一些变体,并基于其他的Glue转换认为以下方法可行。

df1 = RenameField.apply[(frame = df, old_name = "col1",new_name = "COL1"),
                       (frame = df, old_name = "col2", new_name = "COL2")]

2 个答案:

答案 0 :(得分:0)

如果您接受诸如“ DynamicFrame-> DataFrame-> DynamicFrame”之类的转换,则可以编写干净的链代码。 DynamicFrame类具有转换方法; toDF and fromDF。我的意思是,最好对Dataframe类进行重命名。为了使用PySpark Dataframe类,可以使用toDF和fromDF的转换方法。

PySpark Dataframe类具有几种列重命名方法,请参见How to change dataframe column names in pyspark?

答案 1 :(得分:0)

您可以使用DynamicFrame中的applyMapping方法来重命名列和/或强制转换为另一种数据类型(Scala):

val mappedDynamicFrame = sourceDynamicFrame.applyMapping(
      mappings = Seq(
        ("col1", "string", "column_1", "string"),
        ("col2", "string", "column_2", "string"),
        ("col3", "long", "column_3", "timestamp")
      ),
      caseSensitive = false,
      transformationContext = s"mapped-source"
    )