| 231 | } |
| 232 | |
| 233 | fn open_writer( |
| 234 | path: &Path, |
| 235 | schema: SchemaRef, |
| 236 | rows_per_group: usize, |
| 237 | ) -> Result<ArrowWriter<File>> { |
| 238 | if let Some(parent) = path.parent() { |
| 239 | std::fs::create_dir_all(parent) |
| 240 | .map_err(|e| exec_datafusion_err!("creating {}: {e}", parent.display()))?; |
| 241 | } |
| 242 | let file = File::create(path) |
| 243 | .map_err(|e| exec_datafusion_err!("creating {}: {e}", path.display()))?; |
| 244 | let writer_props = WriterProperties::builder() |
| 245 | .set_max_row_group_row_count(Some(rows_per_group.max(1))) |
| 246 | .set_compression(Compression::ZSTD(ZstdLevel::try_new(1).unwrap())) |
| 247 | .build(); |
| 248 | ArrowWriter::try_new(file, schema, Some(writer_props)) |
| 249 | .map_err(|e| exec_datafusion_err!("creating ArrowWriter: {e}")) |
| 250 | } |
| 251 | |
| 252 | fn main() -> Result<()> { |
| 253 | let cli = Cli::parse(); |