Make convert-csv work with the input filename which starts with a period or an numeric
- Ngôn ngữ chính
- Java
- Star
- 3.1k
- Fork
- 1.6k
- Merge trung bình
- 3 ngày 12 giờ
- Pull request đã merge (30 ngày)
- 33
Mô tả
I ran parquet-cli's `convert-csv` with an input file which name starts with a numeric character without `--schema` option and got the following error:
```Java
$ java -cp 'target/*:target/dependency/*' org.apache.parquet.cli.Main convert-csv 0sample.csv -o sample.parquet
Unknown error
shaded.parquet.org.apache.avro.SchemaParseException: Illegal initial character: 0sample
at shaded.parquet.org.apache.avro.Schema.validateName(Schema.java:1498)
at shaded.parquet.org.apache.avro.Schema.access$200(Schema.java:86)
at shaded.parquet.org.apache.avro.Schema$Name.(Schema.java:645)
at shaded.parquet.org.apache.avro.Schema.createRecord(Schema.java:182)
at shaded.parquet.org.apache.avro.SchemaBuilder$RecordBuilder.fields(SchemaBuilder.java:1805)
at org.apache.parquet.cli.csv.AvroCSV.inferSchemaInternal(AvroCSV.java:158)
at org.apache.parquet.cli.csv.AvroCSV.inferNullableSchema(AvroCSV.java:78)
at org.apache.parquet.cli.commands.ConvertCSVCommand.run(ConvertCSVCommand.java:160)
at org.apache.parquet.cli.Main.run(Main.java:147)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.parquet.cli.Main.main(Main.java:177)
```
This is because that `convert-csv` uses the input file name as the name for the output schema, while Avro requires its schema name to match the regex pattern `[A-Za-z_][A-Za-z0-9_]*`.
So users have to change the input file name or use the `--schema` option explicitly, but it's not so obvious from the error message.
It'd be nice if the message were improved, or the schema name were automatically replaced with valid characters to avoid this problem.
**Reporter**: [Kengo Seki](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=sekikn) / @sekikn
**Assignee**: [Kengo Seki](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=sekikn) / @sekikn
#### PRs and other links:
- [GitHub Pull Request #652](https://github.com/apache/parquet-mr/pull/652)
**Note**: *This issue was originally created as [PARQUET-1598](https://issues.apache.org/jira/browse/PARQUET-1598). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
Bắt đầu với org.apache.parquet.cli.csv.AvroCSV.inferSchemaInternal, sử dụng stack trace và ConvertCSVCommand.java làm các điểm bắt đầu. Xem xét pull request #652 để xác định liệu hướng giải quyết dự kiến là một lỗi rõ ràng hơn hay việc tự động xử lý tên schema, sau đó bổ sung độ bao phủ kiểm thử cho thấy convert-csv xử lý đúng theo đặc tả các tên tệp bắt đầu bằng dấu chấm hoặc chữ số.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- java
- Lĩnh vực
- cli, data
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 25/100