Переименуйте столбцы в spark, используя @JsonProperty при создании наборов данных
Есть ли способ переименовать имена столбцов в наборе данных, используя аннотации Джексона при создании набора данных?
Мой класс кодировщика выглядит следующим образом:
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;
}
Моя цель - переименовать столбцы в соответствии с @JsonProperty, чтобы я мог повторно использовать те же функции класса и json.
Пожалуйста, найдите связанные версии модулей: - Spark: 2.4.0 (со scala 2.11) - jackson-module-scala_2.11: 2.9.6
Дайте мне знать, если вам нужна дополнительная информация. Помощь приветствуется.
1 ответ
public class SampleRecord implements Serializable {
private Long sampleId;
private String name;
private String description;
@JsonProperty("sample_id")
public void setSampleId(Long sampleId) {
this.sampleId = sampleId;
}
@JsonProperty("sample_name")
public void setName(String name) {
this.name = name;
}
@JsonProperty("sample_desc")
public void setDescription(String description) {
this.description = description;
}
}
Интересная идея. Как бы я это сделал:
- Вставьте ваши данные в фрейм данных.
- Напишите служебный метод, который принимает фрейм данных и имя класса (здесь SampleRecord).
- Используйте интроспекцию для чтения аннотаций (вы можете добавить их, если вам нужно определить конкретные свойства).
- Переименуйте столбцы с помощью withColumnRenamed() в кадре данных.
- Вернуть измененный фрейм данных.
Е.И.В.