Не удалось получить дату в спарк sql читать CSV - PullRequest
0 голосов
/ 17 марта 2020

Я использую искру, чтобы прочитать CSV. В моем csv-файле у меня есть два столбца с именами TradeDate и SettleDate, которые имеют тип даты в формате yyyyMMdd, как вы можете видеть в печати ниже:

enter image description here

И я читаю CSV-файл следующим образом:

public static DataFrame ReadFile(string path, FileConfiguration fileconfig, SparkSession spark)
        {
            bool hasHeader = fileconfig.FileLoaderFileContainsHeader != 0 || fileconfig.FileLoaderNumberOfLinesToSkip != 0;
            return spark
               .Read()
               .Option("delimiter", fileconfig.FileLoaderColumnSeparator)
               .Option("header", hasHeader)
               .Option("inferSchema", true)
               .Option("dateFormat", "yyyyMMdd")
               .Csv(path);
        }

Я также пытался:

public static DataFrame ReadFile(string path, FileConfiguration fileconfig, SparkSession spark)
        {
            bool hasHeader = fileconfig.FileLoaderFileContainsHeader != 0 || fileconfig.FileLoaderNumberOfLinesToSkip != 0;
            return spark
               .Read()
               .Option("delimiter", fileconfig.FileLoaderColumnSeparator)
               .Option("header", hasHeader)
               .Option("inferSchema", true)
               .Option("TimeStampFormat", "yyyyMMdd")
               .Csv(path);
        }

Но проблема в том, что когда я делаю DataFrame.PrintSchema (), эти столбцы извлекаются как целое число

DataFrame DataframeSource = FileService.ReadFile(AppConfiguration.PathSource, fileConfigurationSource, spark);

DataframeSource.PrintSchema();

Я не могу преобразовать столбцы в формате даты «в руке», потому что я использую этот сценарий для работы с несколькими файлами CSV, и имена столбцов отличаются, несмотря на то, что формат даты является одни и те же. Например, в этом CSV-файле имя столбца - TradeDate, а в другом - FixDate, поэтому я должен сделать это в момент импорта

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...