pojo类型到tuple数据类型

p5fdfcr1  于 2021-06-26  发布在  Flink
关注(0)|答案(1)|浏览(399)

我在javaflinkapi上创建了一个小实用程序来学习这些功能。我正在尝试读取csv文件并打印它,我已经为数据结构开发了一个pojo类。当我执行代码时,我看不到正确的值。如何Map属性的数据类型
我的主要课程:

package org.karthick.flinkLab;

import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;

import javax.xml.crypto.Data;

public class CSVFileRead {
    public static void main(String[] args) throws Exception {
        System.out.println("--CSV File Reader using Flink's Data Set API--");
        ExecutionEnvironment execEnv = ExecutionEnvironment.getExecutionEnvironment();
        DataSet<DataModel> csvInput = execEnv.readCsvFile("C:\\Flink\\Data\\IndividualDetails.csv")
                    .pojoType(DataModel.class);
        csvInput.print();

    }
}

我的pojo类(datamodel.class)

package org.karthick.flinkLab;

import org.apache.flink.api.java.tuple.Tuple;
import org.apache.flink.api.java.tuple.Tuple12;

import java.io.Serializable;
import java.util.Date;

public class DataModel<T extends Tuple>
            extends Tuple12<Integer,String,Date,Integer,String,String,String,String,String,String,Date,String>
            implements Serializable
    {
        public Integer id;
        public String government_id;
        public Date diagnosed_date;
        public Integer age;
        public String detected_city;
        public String detected_district;
        public String detected_state;
        public String nationality;
        public String current_status;
        public Date status_change_date;
        public String notes;

        public DataModel() {};

        public String getNotes() {
            return notes;
        }

        public Date getStatus_change_date() {
            return status_change_date;
        }

        public String getCurrent_status() {
            return current_status;
        }

        public String getNationality() {
            return nationality;
        }

        public String getDetected_state() {
            return detected_state;
        }

        public String getDetected_district() {
            return detected_district;
        }

        public String getDetected_city() {
            return detected_city;
        }

        public String gender    ;

        public Date getDiagnosed_date() {
            return diagnosed_date;
        }

        public String getGender() {
            return gender;
        }

        public Integer getAge() {
            return age;
        }

        public Integer getId() {
            return id;
        }

        public void setId(Integer id) {
            this.id = id;
        }

        public String getGovernment_id() {
            return government_id;
        }

        public void setGovernment_id(String government_id) {
            this.government_id = government_id;
        }
}

当我执行main方法时,我看不到正确的值。样品结果

(0,,Tue May 19 16:50:38 IST 2020,0,,,,,,,Tue May 19 16:50:38 IST 2020,)

像我期望的那样

(2777,AP,Tue May 19 16:50:38 IST 2020,0,A,B,C,D,E,F,Tue May 19 16:50:38 IST 2020,G)

这里可能少了什么?

b0zn9rqh

b0zn9rqh1#

缺少从csv到pojo的列Map。添加Map将起作用。列名的Map必须遵循以下两个规则:
列名应该与pojo中的列名完全相同。
Map中的列顺序应与csv文件中的列顺序完全相同。
可以按以下方式定义Map:

DataSet<DataModel> csvInput = execEnv.readCsvFile("C:\\Flink\\Data\\IndividualDetails.csv")
                    .pojoType(DataModel.class, "id", "age",.........);

它应该抛出错误,但它没有。可能是虫子

相关问题