Я пытаюсь преобразовать файлы CSV в паркет, и я использую Spark для этого.Паркетная схема и Spark
SparkSession spark = SparkSession
.builder()
.appName(appName)
.config("spark.master", master)
.getOrCreate();
Dataset<Row> logFile = spark.read().csv("log_file.csv");
logFile.write().parquet("log_file.parquet");
Теперь проблема я не имеют схемы определены и столбцы выглядеть следующим образом (выход отображается с помощью printSchema() в искру)
root
|-- _c0: string (nullable = true)
|-- _c1: string (nullable = true)
|-- _c2: string (nullable = true)
....
CSV-есть имена в первой строке но они игнорируются, я думаю, проблема только в нескольких столбцах - это строки, у меня также есть ints и даты.
Каковы мои возможности для определения схемы и как? Если мне нужно написать файл паркета по-другому, тогда не проблема, если это быстрое решение.
(я использую искровой автономно для испытаний/не знаю Scala)
Вы пробовали '.option (« inferschema », true)' при чтении csv? –
@rajat просто попробовал, это лучше, но не идеально, где-то увидел, что я могу использовать 'StructType' для этого. (также используется 'option (" header ", true)') У меня есть еще одна проблема, однако некоторые столбцы являются нулевыми, и они не должны быть ... позвольте мне проверить CSV, не уверен, как искра ожидает формат точно (кавычки или нет кавычек) – changepicture
при чтении через spark-csv вы можете указать опцию («режим», «FAILFAST»). «Это даст ошибку, если какая-либо строка не имеет той же самой схемы, как указано. –