taiho choi created SPARK-22019: ---------------------------------- Summary: JavaBean int type property Key: SPARK-22019 URL: https://issues.apache.org/jira/browse/SPARK-22019 Project: Spark Issue Type: Bug Components: SQL Affects Versions: 2.2.0 Reporter: taiho choi
when the type of SampleData's id is int, following code generates errors. when long, it's ok. {code:java} @Test public void testDataSet2() { ArrayList<String> arr= new ArrayList(); arr.add("{\"str\": \"everyone\", \"id\": 1}"); arr.add("{\"str\": \"Hello\", \"id\": 1}"); //1.read array and change to string dataset. JavaRDD<String> data = sc.parallelize(arr); Dataset<String> stringdataset = sqc.createDataset(data.rdd(), Encoders.STRING()); stringdataset.show(); //PASS //2. convert string dataset to sampledata dataset Dataset<SampleData> df = sqc.read().json(stringdataset).as(Encoders.bean(SampleData.class)); df.show();//PASS df.printSchema();//PASS Dataset<SampleDataFlat> fad = df.flatMap(SampleDataFlat::flatMap, Encoders.bean(SampleDataFlat.class)); fad.show(); //ERROR fad.printSchema(); } public static class SampleData implements Serializable { public String getStr() { return str; } public void setStr(String str) { this.str = str; } public int getId() { return id; } public void setId(int id) { this.id = id; } String str; int id; } public static class SampleDataFlat { String str; public String getStr() { return str; } public void setStr(String str) { this.str = str; } public SampleDataFlat(String str, long id) { this.str = str; } public static Iterator<SampleDataFlat> flatMap(SampleData data) { ArrayList<SampleDataFlat> arr = new ArrayList<>(); arr.add(new SampleDataFlat(data.getStr(), data.getId())); arr.add(new SampleDataFlat(data.getStr(), data.getId()+1)); arr.add(new SampleDataFlat(data.getStr(), data.getId()+2)); return arr.iterator(); } } {code} ==Error message== Caused by: org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 38, Column 16: failed to compile: org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 38, Column 16: No applicable constructor/method found for actual parameters "long"; candidates are: "public void SparkUnitTest$SampleData.setId(int)" /* 024 */ public java.lang.Object apply(java.lang.Object _i) { /* 025 */ InternalRow i = (InternalRow) _i; /* 026 */ /* 027 */ final SparkUnitTest$SampleData value1 = false ? null : new SparkUnitTest$SampleData(); /* 028 */ this.javaBean = value1; /* 029 */ if (!false) { /* 030 */ /* 031 */ /* 032 */ boolean isNull3 = i.isNullAt(0); /* 033 */ long value3 = isNull3 ? -1L : (i.getLong(0)); /* 034 */ /* 035 */ if (isNull3) { /* 036 */ throw new NullPointerException(((java.lang.String) references[0])); /* 037 */ } /* 038 */ javaBean.setId(value3); -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org