В настоящее время я работаю над школьным проектом с использованием потоковой передачи искр и поиска 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"))
, но это дает мне нулевые даты.