You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "taiho choi (JIRA)" <ji...@apache.org> on 2017/09/15 03:55:00 UTC
[jira] [Created] (SPARK-22019) JavaBean int type property
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-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org