यह धागा थोड़ा पुराना है, लेकिन मैं जावा का उपयोग कर एक समान स्थिति में भाग गया। मुझे लगता है कि किसी भी चीज़ से ज्यादा, इस समस्या से मुझे कैसे संपर्क करना चाहिए इसकी एक वैचारिक गलतफहमी थी।
मेरी समस्या को ठीक करने के लिए, मैंने डेटासेट के लिए नए कॉलम में सहायता के लिए एक साधारण POJO बनाया (जैसा कि मौजूदा पर निर्माण करने का प्रयास करने के विपरीत)। मुझे अवधारणात्मक रूप से लगता है, मुझे समझ में नहीं आया कि प्रारंभिक पढ़ने के दौरान डेटासेट उत्पन्न करना सबसे अच्छा था जहां अतिरिक्त कॉलम को जोड़ा जाना आवश्यक था। मुझे उम्मीद है कि यह भविष्य में किसी की मदद करेगा।
निम्नलिखित पर विचार करें:
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...
स्रोत
2017-01-27 22:10:34
कॉलम के साथ एकमात्र समस्या यह है कि आपकी सूची से तत्वों को क्रमशः चुनना मुश्किल हो और उन्हें चयनित पंक्तियों में जोड़ें। यदि आपके पास ऐसा करने का कोई तरीका है, तो यह संभवतः बेहतर है, लेकिन आपका प्रश्न सामान्य कहने के लिए है;) – Niemand
क्यों, मैं अपनी सूची को कॉलम ऑब्जेक्ट में सबसे पहले परिवर्तित कर दूंगा और इसे दूसरे फ़ंक्शन तर्क की तरह जोड़ दूंगा। क्या यह ठीक नहीं है? ... – Guforu
दिलचस्प। कृपया समाप्त करने के बाद कृपया यह पोस्ट करें कि आपने इसे कैसे किया। – Niemand