Я получаю данные из DynamodB и преобразую данные в файлы паркета.
Для преобразования в файлы паркета я использую библиотеку https://github.com/xitongsys/parquet-go. Но по какой-то причине я получаю runtime error: invalid memory address or nil pointer dereference
Я знаю, что эта ошибка означает, что указатель равен нулю, и я пытаюсь использовать его или разыменовать его.
Не знаю, почему pw.WriteStop () выдает недопустимую ошибку памяти
код:
fw, err := local.NewLocalFileWriter(parquetFile)
if err != nil {
log.Errorf("local.NewLocalFileWriter() error - %s", err)
return err
}
pw, err := writer.NewParquetWriter(fw, new(Struct), int64(len(tenantList)))
if err != nil {
log.Errorf("writer.NewParquetWriter() error - %s", err)
return err
}
pw.RowGroupSize = 128 * 1024 * 1024 //128M
pw.CompressionType = parquet.CompressionCodec_SNAPPY
for _, data := range tenantList {
if err = pw.Write(data); err != nil {
return err
}
}
// this line gives memory invalid error
if err = pw.WriteStop(); err != nil {
return err
}
fw.Close()
Единственная ошибка, которую я получаю, это «ошибка времени выполнения: недопустимая память» разыменование адреса или нулевого указателя ". Распечатав операторы в операторах «если», я обнаружил, что неверный адрес памяти исходит от «pw.WriteStop ()»
Прикрепление снимка экрана с ошибкой; просто чтобы показать, что я действительно получаю только «ошибка времени выполнения: неверный адрес памяти или разыменование нулевого указателя»