【发布时间】:2017-07-16 08:01:34
【问题描述】:
我有Dataset<Tuple2<String,DeviceData>> 并想将其转换为Iterator<DeviceData>。
下面是我使用collectAsList() 方法然后获取Iterator<DeviceData> 的代码。
Dataset<Tuple2<String,DeviceData>> ds = ...;
List<Tuple2<String, DeviceData>> listTuple = ds.collectAsList();
ArrayList<DeviceData> myDataList = new ArrayList<DeviceData>();
for(Tuple2<String, DeviceData> tuple : listTuple){
myDataList.add(tuple._2());
}
Iterator<DeviceData> myitr = myDataList.iterator();
我不能使用collectAsList(),因为我的数据量很大,会影响性能。我查看了 Dataset API,但找不到任何解决方案。我用谷歌搜索但找不到任何答案。有人可以指导我吗?如果解决方案是在 java 中,那就太好了。谢谢。
编辑:
DeviceData 类是简单的 javabean。这是 ds 的 printSchema() 输出。
root
|-- value: string (nullable = true)
|-- _2: struct (nullable = true)
| |-- deviceData: string (nullable = true)
| |-- deviceId: string (nullable = true)
| |-- sNo: integer (nullable = true)
【问题讨论】:
标签: java apache-spark apache-spark-2.0 apache-spark-dataset