2017-02-08 9 views
0

Я читаю данные из hbase, используя искру, и у меня есть столбец даты в dataframe, и некоторые из полей данных были повреждены. Что-то вроде 10-20176-7 и т. Д. Как я могу их проверить и заменить на некоторые значения по умолчанию прежде чем я буду обрабатывать дальше.Проверка столбца даты в фрейме данных в scala?

Спасибо.

+2

вы можете показать, что вы пробовали до сих пор? Дайте нам код, чтобы начать с ... –

+0

вы можете проверить существующий ответ на [дата проверки] (http://stackoverflow.com/a/40510441/647053), а затем вы можете заменить недействительные даты значением по умолчанию. –

+0

@RamGhadiyaram, я реализовал вышеуказанную логику и получаю нулевые записи в dataframe, хотя у меня есть записи с действительной датой. – GSR

ответ

0

Я стекаю трассировку ошибки, а ниже - ошибка.

Exception in thread "main" java.time.format.DateTimeParseException: 
Text '20140218' could not be parsed: 
Unable to obtain LocalDateTime from TemporalAccessor: 
{},ISO resolved to 2014-02-18 of type java.time.format.Parsed 
at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1918) 
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1853) 
at java.time.LocalDateTime.parse(LocalDateTime.java:492) 

Для решения проблемы я использовал LocalDate вместо LocalDateTime. Ниже приведен пример кода.

def validateDfsdate(row: Row): Boolean = try { 

val a = java.time.LocalDate.parse(row.getString(40), java.time.format.DateTimeFormatter.ofPattern(DATE_TIME_FORMAT)) 

true 

} catch { 
case ex: java.time.format.DateTimeParseException => { 
    println("Exception : " + ex) 
    false 
} 

}