【问题标题】:How can I convert a custom Java class to a Spark Dataset如何将自定义 Java 类转换为 Spark 数据集
【发布时间】:2017-04-28 09:21:38
【问题描述】:

我不知道如何将测试对象列表转换为 Spark 中的数据集 这是我的课:

public class Test {
    public String a;
    public String b;
    public Test(String a, String b){
        this.a = a;
        this.b = b;
    }

    public List getList(){
        List l = new ArrayList();
        l.add(this.a);
        l.add(this.b);

        return l;
    }
}

【问题讨论】:

  • code Test t = new Test("1", "Test");测试 tt = new Test("11", "Test2");列表 tl = new ArrayList(); tl.add(t); tl.add(tt);数据集 ds = spark.createDataFrame(tl, Test.class);

标签: java apache-spark dataset


【解决方案1】:

您在 cmets 中创建 DataFrame 的代码是正确的。但是,您定义Test 的方式存在问题。您只能使用来自 Java Bean 的代码来创建 DataFrame。您的 Test 类不是 Java Bean。修复该问题后,您可以使用以下代码创建 DataFrame:

Dataset<Row> dataFrame = spark.createDataFrame(listOfTestClasses, Test.class);

这些行来创建一个类型化的数据集:

Encoder<Test> encoder = Encoders.bean(Test.class);
Dataset<Test> dataset = spark.createDataset(listOfTestClasses, encoder);

【讨论】:

  • 默认情况下,编码器按字母顺序对变量进行排序,以便在我的数据集中创建列。如何更改默认顺序测试类?
  • 这里的 listOfTestClasses 是什么? List listOfTestClasses ?如果是,那么它对我不起作用:(
猜你喜欢
  • 2018-01-12
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 2017-07-08
  • 2013-09-23
  • 2018-06-14
相关资源
最近更新 更多