文档未指定是否允许这样做,但是我似乎无法使其正常工作,而且一遍又一遍地链接多个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")]
答案 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"
)