apachespark在java中具有参数化/泛型类的数据集

wtzytmuj  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(459)

我一直在想,在java中是否可以使用参数化/泛型类的数据集。更清楚地说,我希望实现的目标是:

  1. Dataset<MyClass<Integer>> myClassInteger;
  2. Dataset<MyClass<String>> myClassString;

如果可能的话请告诉我。如果你也能告诉我如何做到这一点,我将非常感激。谢谢!

zzlelutf

zzlelutf1#

是的,你可以有自己的类的数据集。看起来像 Dataset<MyOwnClass> 在下面的代码中,我尝试读取一个文件内容并将其放入我们创建的类的数据集中。请检查下面的代码段。

  1. import org.apache.spark.sql.Dataset;
  2. import org.apache.spark.sql.Encoder;
  3. import org.apache.spark.sql.Encoders;
  4. import org.apache.spark.sql.SparkSession;
  5. import java.io.Serializable;
  6. public class FileDataset {
  7. public static class Employee implements Serializable {
  8. public int key;
  9. public int value;
  10. }
  11. public static void main(String[] args) {
  12. // configure spark
  13. SparkSession spark = SparkSession
  14. .builder()
  15. .appName("Reading JSON File into DataSet")
  16. .master("local[2]")
  17. .getOrCreate();
  18. final Encoder<Employee> employeeEncoder = Encoders.bean(Employee.class);
  19. final String jsonPath = "/Users/ajaychoudhary/Documents/student.txt";
  20. // read JSON file to Dataset
  21. Dataset<Employee> ds = spark.read()
  22. .json(jsonPath)
  23. .as(employeeEncoder);
  24. ds.show();
  25. }
  26. }

我的工作内容 student.txt 文件是

  1. { "key": 1, "value": 2 }
  2. { "key": 3, "value": 4 }
  3. { "key": 5, "value": 6 }

它在控制台上生成以下输出:

  1. +---+-----+
  2. |key|value|
  3. +---+-----+
  4. | 1| 2|
  5. | 3| 4|
  6. | 5| 6|
  7. +---+-----+

我希望这能让您初步了解如何拥有自己自定义类的数据集。

展开查看全部

相关问题