Mam Dataset<Tuple2<String,DeviceData>>
i chcę go przetransformować na Iterator<DeviceData>
.Jak przekształcić zestaw danych <Tuple2 <String, DeviceData >> na Iterator <DeviceData>
Poniżej znajduje się mój kod, w którym używam metody collectAsList()
, a następnie otrzymuję 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();
Nie mogę korzystać collectAsList()
jak moje dane jest ogromny i będzie to utrudniać działanie. Sprawdziłem interfejs API zestawu danych, ale nie mogłem znaleźć rozwiązania. Przeszukałem go, ale nie znalazłem żadnej odpowiedzi. Czy ktoś może mnie poprowadzić? Jeśli rozwiązanie jest w języku Java, będzie świetnie. Dzięki.
EDIT:
DeviceData
klasa jest prosta JavaBeans. Oto wynik printSchema() dla ds.
root
|-- value: string (nullable = true)
|-- _2: struct (nullable = true)
| |-- deviceData: string (nullable = true)
| |-- deviceId: string (nullable = true)
| |-- sNo: integer (nullable = true)