创建数据集时使用@JsonProperty 重命名 spark 中的列

Arj*_*v96 6 java scala apache-spark apache-spark-encoders

有没有办法在创建数据集时使用 Jackson 注释重命名数据集中的列名?

我的编码器类如下:

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
import scala.Serializable;
import javax.persistence.Table;

      @Builder 
      @Data 
      @AllArgsConstructor
      @EqualsAndHashCode 
      @Table(name = "sample_table")
      public class SampleRecord implements Serializable {
         @JsonProperty("sample_id")
         private Long sampleId;
         @JsonProperty("sample_name")
         private String name;
         @JsonProperty("sample_desc")
         private String description; 
      }
Run Code Online (Sandbox Code Playgroud)

我的目标是根据@JsonProperty 重命名列,以便我可以重新使用相同的类和 json 功能。

请找到模块的相关版本: - Spark : 2.4.0 (with scala 2.11) - jackson-module-scala_2.11 : 2.9.6

如果您需要更多信息,请与我们联系。帮助表示赞赏。

jgp*_*jgp 0

有趣的想法。我会这样做的方式:

  1. 将数据提取到数据框中。
  2. 编写一个采用数据帧和类名(此处为 SampleRecord)的实用程序方法。
  3. 使用内省来读取注释(如果需要定义特定属性,您最终可以添加一些注释)。
  4. 使用数据框上的 withColumnRenamed() 重命名列。
  5. 返回修改后的数据框。