Ошибка поиска Elasti c и PySpark date_format_parsing - PullRequest
0 голосов
/ 16 июня 2020

В настоящее время я работаю над школьным проектом с использованием потоковой передачи искр и поиска elasti c. Я собираю информацию о Reddit, используя коннектор kafka. Затем Spark подключается к этому topi c и передает информацию в elasti c search.

Проблема, с которой я столкнулся, - это какая-то странная ошибка поиска elasti c из-за формата даты.

date_time_parse_exception: Failed to parse with all enclosed parsers

Мои данные содержат метку времени в формате

yyyy-MM-dd HH:mm:ss

после некоторых исследований в Интернете я понял, что проблема была в сопоставлении поиска elasti c (поскольку оно использует Jova-time) . Итак, я изменил свое отображение следующим образом:

"mappings": {
        "properties": {
            "created_utc": {
                "type": "date",
                "format": "yyyy-MM-dd'T'HH:mm:ssZZ"
            }

(это только часть моего отображения)

К сожалению, я не решил проблему и, честно говоря, на данный момент не На самом деле не знаю, в чем может быть проблема.

Большое спасибо!

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

unix метка времени в строку метки времени:

wordsDataFrame = wordsDataFrame.withColumn('created_utc', f.date_format(wordsDataFrame.created_utc.cast(dataType=tp.TimestampType()), "yyyy-MM-dd HH:mm:ss"))

строка в тип метки времени :

wordsDataFrame = wordsDataFrame.withColumn('created_utc', f.to_timestamp('created_utc', "yyyy-MM-dd HH:mm:ss"))

Я также попытался изменить преобразование, используя тот же формат, который требуется для elasti c search:

wordsDataFrame = wordsDataFrame.withColumn('created_utc', f.to_timestamp('created_utc', "yyyy-MM-dd'T'HH:mm:ss"))

, но это дает мне нулевые даты.

...