Questo thread è un po 'vecchio, ma mi sono imbattuto in una situazione simile utilizzando Java. Penso più di ogni altra cosa, c'è stato un equivoco concettuale su come dovrei affrontare questo problema.
Per risolvere il problema, ho creato un semplice POJO per assistere con la nuova colonna per un set di dati (anziché provare a creare uno esistente). Penso concettualmente, non ho capito che era meglio generare il set di dati durante la lettura iniziale in cui era necessario aggiungere la colonna aggiuntiva. Spero che questo aiuti qualcuno in futuro.
Si consideri il seguente:
JavaRDD<MyPojo> myRdd = dao.getSession().read().jdbc("jdbcurl","mytable",someObject.getProperties()).javaRDD().map(new Function<Row,MyPojo>() {
private static final long serialVersionUID = 1L;
@Override
public MyPojo call(Row row) throws Exception {
Integer curDos = calculateStuff(row); //manipulate my data
MyPojo pojoInst = new MyPojo();
pojoInst.setBaseValue(row.getAs("BASE_VALUE_COLUMN"));
pojoInst.setKey(row.getAs("KEY_COLUMN"));
pojoInst.setCalculatedValue(curDos);
return dos;
}
});
Dataset<Row> myRddRFF = dao.getSession().createDataFrame(myRdd, MyPojo.class);
//continue load or other operation here...
fonte
2017-01-27 22:10:34
L'unico problema con withColumn è che sarà difficile raccogliere gli elementi dal tuo elenco in sequenza e aggiungerli alle righe selezionate. Se hai un modo per farlo, probabilmente è meglio così, ma la tua domanda è generica da dire;) – Niemand
Perché, prima convertirò la mia lista in oggetto Colonna e la aggiungerò come secondo argomento di funzione. Non va bene? ... – Guforu
Interessante. Per favore pubblica come hai fatto dopo aver finito. – Niemand