Как создать бизнес-логи c для регулярного выражения и сохранить данные в CSV-файл - PullRequest
0 голосов
/ 31 января 2020

У нас есть файл журнала .txt, я использовал scala spark, чтобы прочитать файл. файл содержит наборы данных по строкам. Я читаю данные по очереди, как показано ниже

val sc = spark.SparkContext
val dataframe = sc.textFile(/path/to/log/*.txt)

У нас есть файл журнала .txt, я использовал scala spark для чтения файла. файл содержит наборы данных по строкам. я читаю данные по одному, как показано ниже

val sc = spark.SparkContext
val dataframe = sc.textFile(/path/to/log/*.txt)

val get_set_element = s c .textFile (filepath.txt)

val pattern = """(\S+) "([\S\s]+)\" (\S+) (\S+) (\S+) (\S+)""".r

val test =  get_set_element.map{ line =>
    ( for {
        m <- pattern.findAllIn(line).matchData
        g <- m.subgroups
      } yield(g)
    ).toList
  }.
  map(l => (l(0), l(1), l(2), l(3), l(4), l(5)))

Я хочу создать DataFrame, чтобы я могу сохранить его в CSV-файл.

1 Ответ

1 голос
/ 31 января 2020

Может быть создан из RDD [Row] с назначенной схемой:

// instead of: map(l => (l(0), l(1), l(2), l(3), l(4), l(5)))
.map(Row.fromSeq)
val fields = (0 to 5).map(idx => StructField(name = "l" + idx, dataType = StringType, nullable = true))
val df = spark.createDataFrame(test, StructType(fields))

Выход:

+---+---+---+---+---+---+
|l0 |l1 |l2 |l3 |l4 |l5 |
+---+---+---+---+---+---+
|a  |b  |c  |d  |e  |f  |
+---+---+---+---+---+---+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...