Spark Java中如何从Row获取正确数据类型的属性值
Spark Java中从Row获取不同类型字段值的方法
1. 使用getAs()获取Long/Int等类型
getAs()方法完全支持Long、Integer、Boolean等Java包装类型,只要字段的实际类型和你声明的接收类型匹配,就能直接获取值,无需额外转换:
// 获取Long类型字段 final Long quantity = row.getAs("quantity"); // 获取Int类型字段 final Integer age = row.getAs("age");
注意:如果字段实际类型与接收类型不匹配(比如把Int类型字段用Long接收),会抛出ClassCastException,请确保与DataFrame的Schema定义一致。
2. 使用getLong()/getInt()等方法(通过字段名转索引)
getLong()、getInt()这类方法需要传入字段的索引值,你可以先通过Row的Schema获取字段名对应的索引,再调用这些方法:
// 根据字段名获取索引 int quantityIndex = row.schema().fieldIndex("quantity"); // 获取long基本类型值(可自动装箱为Long包装类) long quantity = row.getLong(quantityIndex); // 同理获取Int类型 int ageIndex = row.schema().fieldIndex("age"); int age = row.getInt(ageIndex);
这类方法返回的是Java基本类型,若需要包装类可直接自动装箱,比如Long quantityObj = row.getLong(quantityIndex);。
内容的提问来源于stack exchange,提问作者chingu
相关产品推荐
相关产品推荐

