【问题标题】:How to define a spark Schema for a List of objects i.e. StructType?如何为对象列表(即 StructType)定义火花模式?
【发布时间】:2020-02-07 11:15:11
【问题描述】:

我在我的项目中使用带有 Java 8 的 spark-sql-2.3.1v。我正在尝试定义一个模式来解码来自 Kafka 流的消息消费。

我有

class Company{
    String companyName;
    Integer companyId;
}

我定义为

public static final StructType companySchema = new StructType(
              .add("companyName", DataTypes.StringType)
              .add("companyId", DataTypes.IntegerType);

但消息定义为

class Message{
    private List<Company> companyList;
    private String messageId;
}

我试图定义为

public static final StructType messageSchema = new StructType()
            .add("companyList", List(companySchema)),true)
            .add("messageId", DataTypes.StringType);

这在列表中给出错误。那么这个schema应该如何定义呢?

【问题讨论】:

  • 你试过DataTypes.createArrayType(companySchema)吗?

标签: apache-spark java-8 apache-spark-sql spark-streaming


【解决方案1】:

以下工作。

public static final StructType messageSchema = new StructType()
            .add("companyList", DataTypes.createArrayType(companySchema, false),false)
            .add("messageId", DataTypes.StringType);

【讨论】:

    猜你喜欢
    • 2021-11-25
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多