/ / Застосування перетворень на наборі даних Apache Spark - java, apache-іскр, іскри-dataframe

Застосування перетворень на Dataset Apache Spark-java, апачі-іскри, іскрові-даніфрейми

Я обробляю a Dataset<Row>в Apache Spark з використанням Java і потрібно зробити aпара математичних перетворень над усіма колонками цього набору даних. В основному одне з перетворень полягає в тому, щоб отримати журнал усіх значень, що зберігаються в даному наборі даних, і все ще повертаються Dataset<Row>. Я чітко бачу, як це зробити в a map функція в RDD, але як я можу це зробити в a Dataset<Row>?

Контекст: Dataset<Row> old містить 2 стовпці a і b. Я хочу повернути нову Dataset<Row> new з обома колонками a = log(a) і b = log(b)

Відповіді:

1 для відповіді № 1

що ви можете зробити, це можна створити метод, який приймає значення типу a [column] і b [column] як параметр і повертає значення журналу.

Припустимо, що стовпчик a і стовпець b мають довгий характер

public long getLog(long value){
// yourlogic to generate log
}

потім застосуйте функцію карти над набором даних. Під функцією map ви отримаєте значення як тип Row застосувати getLong/getAs() Метод, щоб отримати відповідне значення, потім передайте це значення у ваш метод обчислення журналів, тобто. getLog у нашому випадку повернемо результуюче значення.

вам може знадобитися повернутися Tuple2 для обох значень a та b колонці

Або ви можете створити udf користувач визначає функцію spqrk sql потім застосувати withcoumn метод застосовувати udf

ПРИМІТКА udf візьме значення типу a [стовпчик] і b [column] як аргумент і повертає значення журналу.

Сподіваюся, що це добре