[ 
https://issues.apache.org/jira/browse/FLINK-8008?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16243362#comment-16243362
 ] 

Muhammad Imran Tariq edited comment on FLINK-8008 at 11/8/17 4:40 AM:
----------------------------------------------------------------------

I am calling 
_public PojoTypeInfo(Class<T> typeClass, List<PojoField> fields)_ constructor 
of class _PojoTypeInfo_.

Below is my code.
_//create a PojoTypeInfo
PojoTypeInfo<Person> sourceType = new PojoTypeInfo<Person>(Person.class, 
fieldList);
//create a dataset
DataSet<Person> data= env.createInput(new PojoCsvInputFormat<Person>(new 
Path(textPath),
        CsvInputFormat.DEFAULT_LINE_DELIMITER, 
CsvInputFormat.DEFAULT_FIELD_DELIMITER, sourceType),
        sourceType);

//create a table of this dataset
Table newT = tableEnv.fromDataSet(text);
//sink table
TableSink sink = new CsvTableSink("fielpath.csv", "|", 1,WriteMode.OVERWRITE);
newT.writeToSink(sink);_

So as I said earlier that there are two fields in my POJO class. first is 
ID(Integer), second one is Age(Double). PojoTypeInfo info sorts fields in 
alphabetical order. But CSVReader reads file and did not sort columns. When I 
sink my table, then datatype of Age field(which is Double) get applied on ID 
field. So initially my data in CSV was:
1,25
2,33
After sink it becomes
1.0,25
2.0,33

To avoid this I want PojoTypeInfo class not to sort fields inside its 
constructor.







was (Author: imran.tariq):
I am calling 
_public PojoTypeInfo(Class<T> typeClass, List<PojoField> fields)_ constructor 
of class _PojoTypeInfo_.

Below is my code.
_//create a PojoTypeInfo
PojoTypeInfo<Person> sourceType = new PojoTypeInfo<Person>(Person.class, 
fieldList);
//create a dataset
DataSet<Person> data= env.createInput(new PojoCsvInputFormat<Person>(new 
Path(textPath),
        CsvInputFormat.DEFAULT_LINE_DELIMITER, 
CsvInputFormat.DEFAULT_FIELD_DELIMITER, sourceType),
        sourceType);

//create a table of this dataset
Table newT = tableEnv.fromDataSet(text);
//sink table
TableSink sink = new CsvTableSink("D:\\invesco\\POC\\Flink\\rules 
implementation\\data3.csv", "|", 1,
                WriteMode.OVERWRITE);
newT.writeToSink(sink);_

So as I said earlier that there are two fields in my POJO class. first is 
ID(Integer), second one is Age(Double). PojoTypeInfo info sorts fields in 
alphabetical order. But CSVReader reads file and did not sort columns. When I 
sink my table, then datatype of Age field(which is Double) get applied on ID 
field. So initially my data in CSV was:
1,25
2,33
After sink it becomes
1.0,25
2.0,33

To avoid this I want PojoTypeInfo class not to sort fields inside its 
constructor.






> PojoTypeInfo should sort fields fields based on boolean
> -------------------------------------------------------
>
>                 Key: FLINK-8008
>                 URL: https://issues.apache.org/jira/browse/FLINK-8008
>             Project: Flink
>          Issue Type: Improvement
>          Components: DataSet API
>    Affects Versions: 1.3.2
>            Reporter: Muhammad Imran Tariq
>            Priority: Minor
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> Flink PojoTypeInfo<T> sorts fields array that are passed into constructor 
> arguments. I want to create another constructor that takes boolean parameter 
> to sort field or not.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to