вызывая метод scala, передавая каждую строку кадра данных в качестве входных данных - PullRequest
0 голосов
/ 04 января 2019

У меня есть фрейм данных, в котором есть два столбца, был создан импорт файла .txt.

пример содержимого файла ::

Sankar Biswas, Played{"94"}
Puja "Kumari" Jha, Didnot
Man Women, null
null,Gay Gentleman
null,null

Создан фрейм данных, импортирующий вышеуказанный файл.::

val a = sc.textFile("file:////Users/sankar.biswas/Desktop/hello.txt")

case class Table(contentName: String, VersionDetails: String)

val b = a.map(_.split(",")).map(p => Table(p(0).trim,p(1).trim)).toDF

Теперь у меня есть определенная функция, скажем так:

  def getFormattedName(contentName : String, VersionDetails:String): Option[String] = {
    Option(contentName+titleVersionDesc)
  }

Теперь мне нужно взять каждую строку кадра данных и вызватьметод getFormattedName, передающий 2 аргумента каждой строки информационного кадра.

Я пытался так же, как и многие другие, но не получилось: *

val a = b.map((m,n) => getFormattedContentName(m,n))

Буду рад любым предложениям, которые у вас есть длямне.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Попробуйте

val a = b.map(row => getFormattedContentName(row(0),row(1)))

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

0 голосов
/ 04 января 2019

Я думаю, что у вас есть структурированная схема, и она может быть представлена ​​в виде кадра данных.Dataframe поддерживает чтение ввода CSV.

import org.apache.spark.sql.types._
val customSchema = StructType(Array(StructField("contentName", StringType, true),StructField("titleVersionDesc", StringType, true)))

val df = spark.read.schema(customSchema).csv("input.csv")

Чтобы вызвать пользовательский метод в наборе данных, вы можете создать UDF (пользовательскую функцию).

def getFormattedName(contentName : String, titleVersionDesc:String): Option[String] = {
    Option(contentName+titleVersionDesc)
  }

val get_formatted_name = udf(getFormattedName _)

df.select(get_formatted_name($"contentName", $"titleVersionDesc"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...