Текстовый файл определенного формата в DataFrame в Spark с использованием Scala - PullRequest
2 голосов
/ 08 июля 2019

Я пытаюсь преобразовать разговор в датафрейм в Spark через Scala. Человек и его сообщение разделены табуляцией длиной пробела. Каждый разговор в новой строке.

Текстовый файл выглядит следующим образом:

alpha   hello,beta! how are you?
beta    I am fine alpha.How about you?
alpha   I am also doing fine...
alpha   Actually, beta, I am bit busy nowadays and sorry I hadn't call U

и мне нужен следующий фрейм данных:

------------------------------------
|Person  |  Message
------------------------------------
|1       |  hello,beta! how are you?
|2       |  I am fine alpha.How about you?
|1       |  I am also doing fine...
|1       |  Actually, beta, I am bit busy nowadays and sorry I hadn't call 
-------------------------------------

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Сначала я создал текстовый файл с предоставленными вами данными и поместил его в папку HDFS в temp / data.txt

data.txt:

alpha   hello,beta! how are you?
beta    I am fine alpha.How about you?
alpha   I am also doing fine...
alpha   Actually, beta, I am bit busy nowadays and sorry I hadn't call U

Затем я создалcase, прочитайте в файле и обработайте его во фрейме данных:

case class PersonMessage(Person: String, Message: String)
  val df = sc.textFile("temp/data.txt").map(x => {
  val splits = x.split("\t")
  PersonMessage(splits(0), splits(1))
}).toDF("Person", "Message")
df.show
+------+--------------------+
|Person|             Message|
+------+--------------------+
| alpha|hello,beta! how a...|
|  beta|I am fine alpha.H...|
| alpha|I am also doing f...|
| alpha|Actually, beta, I...|
+------+--------------------+
0 голосов
/ 08 июля 2019

, если вы прочитали текстовый файл и проанализировали:

Пример:

   val result: Dataset[(String, String)] = sparkSession.read.textFile("filePath").flatMap {
      line =>
        val str = line.split("\t")
        if (str.length == 2) {
          Some((str(0), str(1)))
        }
        else {
          //in case if you want to ignore malformed line
          None
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...