Tôi có Dataset<Tuple2<String,DeviceData>>
và muốn chuyển đổi thành Iterator<DeviceData>
.Cách chuyển đổi Tập dữ liệu <Tuple2 <Chuỗi, DeviceData >> thành Iterator <DeviceData>
Dưới đây là mã của tôi nơi tôi đang sử dụng phương pháp collectAsList()
và sau đó nhận được 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();
Tôi không thể sử dụng collectAsList()
vì dữ liệu của tôi rất lớn và sẽ cản trở hiệu suất. Tôi đã xem API Dataset nhưng không thể nhận được bất kỳ giải pháp nào. Tôi googled nó nhưng không thể tìm thấy bất kỳ câu trả lời. Ai đó có thể hướng dẫn tôi không? Nếu giải pháp là trong java đó sẽ là tuyệt vời. Cảm ơn.
EDIT:
DeviceData
lớp là đơn giản JavaBean. Đây là đầu ra printSchema() cho ds.
root
|-- value: string (nullable = true)
|-- _2: struct (nullable = true)
| |-- deviceData: string (nullable = true)
| |-- deviceId: string (nullable = true)
| |-- sNo: integer (nullable = true)