Я хочу проанализировать файл Excel. Этот файл имеет несколько значений полей в качестве формата отметки времени ("dd-MMM-yy hh:mm:ss:SSSSSSSSS aa")
Я определил тип поля как отметку времени, но мое приложение не может идентифицировать тип данных и не может загрузить данные, хотя, если я использую StringType в качестве типа данных, он может анализироватьфайл, но я не хочу использовать этот альтернативный подход. Отсюда ищем правильное решение. Мой код выглядит следующим образом:
ReadExcel("C:path\to\the\raw_file\Consignments.xlsx", "A1", MySchema, spark, "dd-MM-yyyy", "dd-MMM-yy hh:mm:ss:SSSSSSSSS aa")
def ReadExcel(path: String, dataAddress: String = "A2", Schema: StructType, spark: org.apache.spark.sql.SparkSession, datefmt: String = "dd-MM-yyyy", tsfmt: String = "dd-MM-yyyy HH:mm:ss"): DataFrame = {
/**
* Though Crealytics accept TimestampFormat Only
* You can Create CustomSchema with DateType and Date values in data will be typed to Date
*/
cleanHeaders(spark.read
.format("com.crealytics.spark.excel")
.option("dataAddress", dataAddress) //
.option("useHeader", "false") // Required
.option("treatEmptyValuesAsNulls", "true") // Optional, default: true
.option("inferSchema", "false") // Optional, default: false
.option("addColorColumns", "false") // Optional, default: false
.option("timestampFormat", "dd-MM-yyyy HH:mm:ss") // Optional, default: yyyy-mm-dd hh:mm:ss[.fffffffff]
//.option("maxRowsInMemory", 20) // Optional, default None. If set, uses a streaming reader which can help with big files
//.option("excerptSize", 10) // Optional, default: 10. If set and if schema inferred, number of rows to infer schema from
.schema(Schema)
.load(path))
}
Пример данных о дате: 24-SEP-19 07.17.20.873000000 AM
Обратите внимание: я использую библиотеку Databricks и библиотеку Crealytics для чтения файла Excel.