我一直在想,在java中是否可以使用参数化/泛型类的数据集。更清楚地说,我希望实现的目标是:
Dataset<MyClass<Integer>> myClassInteger;Dataset<MyClass<String>> myClassString;
Dataset<MyClass<Integer>> myClassInteger;
Dataset<MyClass<String>> myClassString;
如果可能的话请告诉我。如果你也能告诉我如何做到这一点,我将非常感激。谢谢!
zzlelutf1#
是的,你可以有自己的类的数据集。看起来像 Dataset<MyOwnClass> 在下面的代码中,我尝试读取一个文件内容并将其放入我们创建的类的数据集中。请检查下面的代码段。
Dataset<MyOwnClass>
import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Encoder;import org.apache.spark.sql.Encoders;import org.apache.spark.sql.SparkSession;import java.io.Serializable;public class FileDataset { public static class Employee implements Serializable { public int key; public int value; } public static void main(String[] args) { // configure spark SparkSession spark = SparkSession .builder() .appName("Reading JSON File into DataSet") .master("local[2]") .getOrCreate(); final Encoder<Employee> employeeEncoder = Encoders.bean(Employee.class); final String jsonPath = "/Users/ajaychoudhary/Documents/student.txt"; // read JSON file to Dataset Dataset<Employee> ds = spark.read() .json(jsonPath) .as(employeeEncoder); ds.show(); }}
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Encoder;
import org.apache.spark.sql.Encoders;
import org.apache.spark.sql.SparkSession;
import java.io.Serializable;
public class FileDataset {
public static class Employee implements Serializable {
public int key;
public int value;
}
public static void main(String[] args) {
// configure spark
SparkSession spark = SparkSession
.builder()
.appName("Reading JSON File into DataSet")
.master("local[2]")
.getOrCreate();
final Encoder<Employee> employeeEncoder = Encoders.bean(Employee.class);
final String jsonPath = "/Users/ajaychoudhary/Documents/student.txt";
// read JSON file to Dataset
Dataset<Employee> ds = spark.read()
.json(jsonPath)
.as(employeeEncoder);
ds.show();
我的工作内容 student.txt 文件是
student.txt
{ "key": 1, "value": 2 }{ "key": 3, "value": 4 }{ "key": 5, "value": 6 }
{ "key": 1, "value": 2 }
{ "key": 3, "value": 4 }
{ "key": 5, "value": 6 }
它在控制台上生成以下输出:
+---+-----+|key|value|+---+-----+| 1| 2|| 3| 4|| 5| 6|+---+-----+
+---+-----+
|key|value|
| 1| 2|
| 3| 4|
| 5| 6|
我希望这能让您初步了解如何拥有自己自定义类的数据集。
1条答案
按热度按时间zzlelutf1#
是的,你可以有自己的类的数据集。看起来像
Dataset<MyOwnClass>
在下面的代码中,我尝试读取一个文件内容并将其放入我们创建的类的数据集中。请检查下面的代码段。我的工作内容
student.txt
文件是它在控制台上生成以下输出:
我希望这能让您初步了解如何拥有自己自定义类的数据集。