用Java创建一个Spark数据集,其中包含一列递增的值

用Java创建一个Spark数据集,其中包含一列递增的值,java,apache-spark,java-8,apache-spark-dataset,Java,Apache Spark,Java 8,Apache Spark Dataset,Java新手和Spark在此寻求帮助: 有没有一种方法可以创建一个数据集,其中一列包含从1到n递增的值 Dataset<Row> ds = ss.createDataSet("column-name", 1, 1000); Dataset ds=ss.createDataSet(“列名”,11000); 上面的方法有点粗糙,因为没有像createDataSet这样的方法,但我正在寻找类似的方法,假设您使用的是Java8,那么它可以懒洋洋地创建ds的内容+ in

Java新手和Spark在此寻求帮助:

有没有一种方法可以创建一个数据集,其中一列包含从1到n递增的值

Dataset<Row> ds = ss.createDataSet("column-name", 1, 1000);
Dataset ds=ss.createDataSet(“列名”,11000);

上面的方法有点粗糙,因为没有像
createDataSet
这样的方法,但我正在寻找类似的方法,假设您使用的是Java8,那么它可以懒洋洋地创建
ds

的内容+

int n = 1000;
List<Integer> intList = IntStream.range(1, n+1).boxed().collect(Collectors.toList());
Encoder<Integer> integerEncoder = Encoders.INT();
Dataset<Integer> primitiveDS = spark.createDataset(intList, integerEncoder);
int n=1000;
List intList=IntStream.range(1,n+1).boxed().collect(Collectors.toList());
编码器integerEncoder=Encoders.INT();
Dataset primitiveDS=spark.createDataset(intList,integerEncoder);

还请记住,当您尝试在spark中创建数据集时,您需要创建/传递一个自生成的数据列表,该列表完全在
驱动程序中生成,假设您使用的是java 8+

int n = 1000;
List<Integer> intList = IntStream.range(1, n+1).boxed().collect(Collectors.toList());
Encoder<Integer> integerEncoder = Encoders.INT();
Dataset<Integer> primitiveDS = spark.createDataset(intList, integerEncoder);
int n=1000;
List intList=IntStream.range(1,n+1).boxed().collect(Collectors.toList());
编码器integerEncoder=Encoders.INT();
Dataset primitiveDS=spark.createDataset(intList,integerEncoder);

还请记住,当您尝试在spark中创建数据集时,您需要创建/传递一个自生成的数据列表,该列表完全在
driver

中生成。如果我理解正确,您的解决方案将创建
intList
并将其内容存储在内存中,然后懒洋洋地创建
Dataset
。我正在寻找一种解决方案,它不会在内存中具体化
intList
列表,而是直接创建
Dataset
。这在spark中根本不可能实现。因为您要求的是执行器创建自己的递增整数集。Spark需要完整数据的引用。例如:对于文件,它有一个引用,
延迟加载
。但在您的情况下,没有数据引用。你需要生成它。没有延迟生成的概念
,如果我理解正确,您的解决方案将创建
intList
,并将其内容存储在内存中,然后延迟创建
数据集
。我正在寻找一种解决方案,它不会在内存中具体化
intList
列表,而是直接创建
Dataset
。这在spark中根本不可能实现。因为您要求的是执行器创建自己的递增整数集。Spark需要完整数据的引用。例如:对于文件,它有一个引用,
延迟加载
。但在您的情况下,没有数据引用。你需要生成它。没有延迟生成的概念