Получение значений из набора данных ‹Row› в файл .txt (с использованием Java)

Я здесь новенький, поэтому я надеюсь помочь вам, и мне помогут, если это будет возможно.

Я сделал проект Apache Spark, используя Spark SQL и ML Spark на Java. Я закончил этот проект, но у меня проблемы с выводом.

У меня есть Dataset<Row> final (final - это имя набора данных) с некоторой информацией. Когда я использую show() с этим набором данных (finals.show();), я получаю следующую информацию:

    [2018026,1,9.93,127.66,5.16,245.8,4.426875,6.91]
    [2018026,1,9.97,127.89,5.36,244.8,4.426875,6.91]
    [2018026,1,6.76,113.54,6.42,228.8,4.426875,6.91]
    [2018026,1,6.92,114.2,6.81,224.0,4.426875,6.91]
    [2018026,1,6.86,113.98,6.65,226.0,4.426875,6.91]
    [2018026,1,6.81,113.76,6.58,227.4,4.426875,6.91]
    [2018026,1,6.97,113.49,6.58,225.8,4.426875,6.91]
    [2018026,1,6.97,114.42,6.67,221.6,4.426875,6.91]

(«,» - это разделитель между полями). Ну, я пытаюсь получить этот вывод в текстовом файле, например projectSpark.txt, но для меня это невозможно. Как я могу получить эту информацию в текстовом файле? Должен ли я перебирать Dataset<Row> или есть какие-то методы для этого?

Большое спасибо, ребята.

С Уважением.


person CCantona    schedule 25.09.2018    source источник
comment
Похоже на формат CSV, можно использовать dataset.write.csv.   -  person pasha701    schedule 25.09.2018
comment
DataSet имеет метод toDF, который преобразует его в общий фрейм данных. После этого, как говорили другие, легко записать DataFrame в файл, см. Пример здесь: community.hortonworks.com/questions/46772/   -  person agiro    schedule 25.09.2018
comment
@ ÁlvaroValencia могла бы быть, но я никогда не использовал Scala. Я пытался преобразовать Dataset ‹row› в RDD, но не знаю, как получить данные из RDD на выходе.   -  person CCantona    schedule 25.09.2018
comment
@ pasha701 да, я могу легко конвертировать в CSV, но я не хочу конвертировать в CSV. Спасибо вам за помощь.   -  person CCantona    schedule 25.09.2018
comment
@agiro Я преобразовал другой набор данных в файл CSV, но на этот раз я не хочу преобразовывать в файл CSV. Я просто хочу получить значения из набора данных ‹row› и поместить эти данные в файл .txt.   -  person CCantona    schedule 25.09.2018
comment
@CCantona Java и Scala очень похожи. Основываясь на ответе, который я ранее указывал, это будет примерно так: finals.javaRDD().map(x -> x.toString()).saveAsTextFile("your/path");   -  person Álvaro Valencia    schedule 25.09.2018
comment
@ ÁlvaroValencia может быть чем-то вроде этого, но с помощью этого метода я получаю 200 файлов, 180 из 200 могут быть пустыми. Есть ли способ получить всю информацию в одном файле?   -  person CCantona    schedule 25.09.2018
comment
@CCantona, да, просто используйте coalesce(1) для разделения в одном разделе: finals.javaRDD().map(x -> x.toString()).coalesce(1).saveAsTextFile("your/path");   -  person Álvaro Valencia    schedule 25.09.2018


Ответы (1)


В Java можно сделать что-то вроде этого:

finals.javaRDD().map(x -> x.toString()).saveAsTextFile("your/path");

Он сохранит ваш набор данных в одном текстовом файле.

person Álvaro Valencia    schedule 25.09.2018
comment
Большое спасибо Альваро. Это решит мою проблему. Большое спасибо ;) . - person CCantona; 25.09.2018