printline
- это функция Python.
RDD API - это низкоуровневый API для разработчиков Spark, и поэтому часто проще рассуждать о приложении Spark, которое использует RDD API. Это Spark Core.
DataFrame API - это высокоуровневый API для разработчиков Spark, которые думают с точки зрения SQL (инженеры данных?) Это Spark SQL (который построен поверх Spark Core).
Вопрос в том, как обогатить стандартные функции, доступные в Spark SQL, чем-то, очень похожим на RDD API. Это пользовательские функции (UDF).
Ниже приведено выражение применения функции printline
к каждой строке (записи) в rdd2
(это должно быть как можно ближе). к пандам Python и Scala's Collection API, насколько это возможно).
rdd3= rdd2.map(printline)
rdd3.take(5)
Эквивалентом является использование пользовательской функции и оператора DataFrame.withColumn
. Они одинаковы.
Псевдокод будет выглядеть следующим образом:
df3 = df2.withColumn("nameOfTheColumn", printlineUDF(comma-separated column names))
df3.take(5)
Обратите внимание, что вы работаете с Row
s в API DataFrame, в то время как в RDD API объекты относятся к вашимтип.