【发布时间】:2023-02-14 17:29:21
【问题描述】:
我需要编写两个函数来获取文件转换的输出格式和输出索引。作为其中的一部分,我为这些方法编写了一个 TransformSettings 类并设置了默认值。在转换器类中,我创建了一个新的 TransformSettings 类对象来获取每个作业运行的默认值。此外,我还有另一个名为 ParquetTransformer 的类,它扩展了我想更改这些默认值的 Transformer。所以我像下面这样实现。
class TransformSettings{
def getOuputFormat: String = {
"orc"
}
def getOuputIndex(table: AWSGlueDDL.Table): Option[String] = {
table.StorageDescriptor.SerdeInfo.Parameters.get("orc.column.index.access")
}
}
class Transformer{
def getTransformSettings: TransformSettings = {
new TransformSettings
}
def posttransform(table: AWSGlueDDL.Table):Dateframe ={
val indexAccess = getTransformSettings.getOuputIndex(table: AWSGlueDDL.Table)
........
}
}
class ParquetTransformer extends Transformer{
override def getTransformSettings: TransformSettings = {
val transformSettings = new TransformSettings {
override def getOuputFormat: String = {
"parquet"
}
override def getOuputIndex(table: AWSGlueDDL.Table): Option[String] = {
table.StorageDescriptor.SerdeInfo.Parameters.get("parquet.column.index.access")
}
}
}
}
有没有办法避免每次调用时都在 Transformer 类中创建一个全新的 Transform Settings 对象?
还有一种方法可以使用 Scala 值类以有效的方式重写代码吗?
【问题讨论】:
-
让它成为
ParquetTransformer中的val会员?
标签: scala parquet traits orc value-class