Csv 从文件读取拼花地板模式

Csv 从文件读取拼花地板模式,csv,parquet,Csv,Parquet,我正在尝试构建一个通用转换程序,其中输入是csv文件,它们的模式在一个单独的文件中。输出是一个压缩的拼花文件 当我在程序中嵌入csv模式时,它工作得很好。但是,当我将相同的模式放在一个单独的物理文件中时,在读取模式文件的第一行后,我收到以下错误消息- Caused by: java.lang.IllegalArgumentException: No enum constant org.apache.parquet.schema.Type.Repetition. 我已经试着去查了一下,但是在拼花

我正在尝试构建一个通用转换程序,其中输入是csv文件,它们的模式在一个单独的文件中。输出是一个压缩的拼花文件

当我在程序中嵌入csv模式时,它工作得很好。但是,当我将相同的模式放在一个单独的物理文件中时,在读取模式文件的第一行后,我收到以下错误消息-

Caused by: java.lang.IllegalArgumentException: No enum constant org.apache.parquet.schema.Type.Repetition.
我已经试着去查了一下,但是在拼花地板的上下文中并没有提到这个错误

仅供参考,以下是模式-

message root {
  required binary name (UTF8);
  required binary city (UTF8);
}

请建议我的前进方向/错误

我通过将模式定义为:

message root {   optional int32 voter_id;  optional binary name (STRING);  optional int32 age;  optional binary registration (STRING);  optional double contributions;  optional int32 voterzone;  optional int64 date_time (TIMESTAMP(MILLIS,true));};
也就是说,一行中的所有列。我发现,在windows中,当我们在多行中定义列时,会添加不可见的行尾字符(\r\n),从而导致此崩溃。或者,您可以在代码中将模式定义为:

String message = "message root { " + 
            "  optional int32 voter_id;" + 
            "  optional binary name (STRING);" + 
            "  optional int32 age;" + 
            "  optional binary registration (STRING);" + 
            "  optional double contributions;" + 
            "  optional int32 voterzone;" + 
            "  optional int64 date_time (TIMESTAMP(MILLIS,true));" + 
            "};";

这也很好。

我通过将模式定义为:

message root {   optional int32 voter_id;  optional binary name (STRING);  optional int32 age;  optional binary registration (STRING);  optional double contributions;  optional int32 voterzone;  optional int64 date_time (TIMESTAMP(MILLIS,true));};
也就是说,一行中的所有列。我发现,在windows中,当我们在多行中定义列时,会添加不可见的行尾字符(\r\n),从而导致此崩溃。或者,您可以在代码中将模式定义为:

String message = "message root { " + 
            "  optional int32 voter_id;" + 
            "  optional binary name (STRING);" + 
            "  optional int32 age;" + 
            "  optional binary registration (STRING);" + 
            "  optional double contributions;" + 
            "  optional int32 voterzone;" + 
            "  optional int64 date_time (TIMESTAMP(MILLIS,true));" + 
            "};";
这也行