Spark Dataframe проверяет имена столбцов для записи паркета (scala)
Я обрабатываю события, используя Dataframes, преобразованные из потока событий JSON, который в конечном итоге записывается в формате Parquet.
Тем не менее, некоторые из событий JSON содержат пробелы в ключах, которые я хочу регистрировать и фильтровать / отбрасывать такие события из фрейма данных перед преобразованием его в Parquet, потому что; {} () \ n \ t = считаются специальными символами в Parquet схема (CatalystSchemaConverter), как указано в[1] ниже и, следовательно, не должно быть разрешено в именах столбцов.
Как я могу выполнить такие проверки в Dataframe для имен столбцов и вообще удалить такое событие, не выполняя ошибку задания Spark Streaming.
[1] Spark's CatalystSchemaConverter
def checkFieldName(name: String): Unit = {
// ,;{}()\n\t= and space are special characters in Parquet schema
checkConversionRequirement(
!name.matches(".*[ ,;{}()\n\t=].*"),
s"""Attribute name "$name" contains invalid character(s) among " ,;{}()\\n\\t=".
|Please use alias to rename it.
""".stripMargin.split("\n").mkString(" ").trim)
}