如何在java spark sql中从行中获取正确数据类型的属性值

83qze16e  于 2023-08-06  发布在  Apache
关注(0)|答案(1)|浏览(146)

我使用的是Spark Java(不是scala或python)。
我有一个dataframe (Dataset<Row>),我想从Row访问特定字段。我已经能够得到字段值,如果它是一个字符串,但我不知道该怎么做,如果它是一个长,整数...等。下面是我如何访问它,如果它是一个字符串属性:

final String id = row.getAs("id").toString();

字符串
getAs() Row方法也可以用于其他数据类型吗?我不知道它是否可以正确地键入检索到的值。如果在我查询的数据库中,quantity是Long类型,那么我也想从Row中以Long类型检索它。例如:

final Long quantity = row.getAs("quantity");


我看到有像getLong()getInt()这样的Row方法,但我不知道如何使用它们,因为这些方法接受一个int。我只有要访问的值的字段名,因此只能传入字段名字符串。

ulydmbyx

ulydmbyx1#

getAs(column)方法已经给出了列的值的类型,如果你知道它的类型,那么你可以直接转换它来处理它。

Long myId = (Long)row.getAs("id")

字符串
其他方法依赖于值的索引,所以如果你有一个数据集包含这些列:
longId| stringValue
那么你可以用途:

row.getLong(0)
row.getString(1)


查看更多:https://spark.apache.org/docs/2.1.0/api/java/org/apache/spark/sql/Row.html#getAs(java.lang.String)

相关问题