Как вывести заполнение полей в файле Scala spark? - PullRequest
0 голосов
/ 17 июня 2019

У меня есть текстовый файл. Теперь я хочу заполнить поле вывода в файле как Exp1 & Exp2. Что я должен делать? Это мой вклад:

a
a a
a a a
a a a a
a a a a a

Exp1. Заполните оставшиеся поля символом -, если каждая запись в файле не помещается в поле n=4.

a _ _ _
a a _ _
a a a _
a a a a
a a a a a

exp2. То же, что и выше. Удалите поля после поля n=4, когда количество полей в записи превышает n.

a _ _ _
a a _ _
a a a _
a a a a
a a a a

Мой код:

val df = spark.read.text("data.txt")
val result = df.columns.foldLeft(df){(newdf, colname) => 
   newdf.withColumnRenamed(colname, colname.replace("a", "_"))
} 
result .show 

1 Ответ

0 голосов
/ 17 июня 2019

Это похоже на проблему в стиле домашней работы, поэтому я помогу вам руководствоваться на основе предоставленного вами кода и постараюсь указать правильный путь.

Ваш текущий код только меняет имя столбцов,В этом случае имя столбца «значение» меняется на «v_lue».Вы хотите изменить сами записи.

Сначала вы хотите прочитать эти данные в СДР.Это можно сделать с помощью фрейма данных, но возможность отображать строки строк вместо объектов строк может облегчить концептуальное понимание этого.Я начну.

val data = sc.textFile("data.txt")

Данные будут RDD строк, где каждый элемент представляет собой строку в файле данных.

Мы хотим отобразить этоданные в некоторые новые данные и преобразуйте каждую строку.

data.map(row => {
   // transform each row here
})

Внутри этой карты мы вносим некоторые изменения в строку, которая является строкой.Код внутри применяется к каждой строке в СДР.

Возможно, вы захотите разбить строку, чтобы получить массив строк, чтобы вы могли подсчитать, сколько вхождений 'a'имеются.В зависимости от размера массива, вы захотите создать новую строку и вывести ее из этой карты.Если «а» меньше, чем «n», вы, вероятно, захотите создать строку с достаточным количеством «_».Если их слишком много, вы, вероятно, захотите вернуть строку с правильным номером.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...