Создание набора данных Spark в Java с одним столбцом возрастающих значений

#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);
  

Выше приведено довольно грубо, поскольку такого метода не существует, createDataSet но я ищу что-то в этом роде, что может лениво создавать содержимое ds .

Ответ №1:

Предполагая, что вы используете 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);
  

Также имейте в виду, что когда вы пытаетесь создать набор данных в spark, вам нужно будет создать / передать самогенерируемый список данных, который полностью генерируется driver .

Комментарии:

1. Если я правильно понимаю, ваше решение будет создано intList с его содержимым в памяти и лениво создано Dataset<Integer> позже. Я ищу решение, которое не материализует в памяти intList список, а вместо этого создает Dataset напрямую.

2. Это принципиально невозможно в spark. Потому что вы просите исполнителей создать свой собственный набор возрастающих целых чисел.

3. Spark нужна ссылка на полные данные. Пример: в случае файла у него есть ссылка и LOADS LAZILY . Но в вашем случае нет ссылки на данные. Вам нужно его сгенерировать. Не существует понятия lazy generation