Ho creato un DataFrame da una tabella HBase (PHOENIX) che ha 500 milioni di righe. Da DataFrame ho creato un RDD di JavaBean e lo uso per unire i dati di un file.PHOENIX SPARK - Carica tabella come DataFrame
Map<String, String> phoenixInfoMap = new HashMap<String, String>();
phoenixInfoMap.put("table", tableName);
phoenixInfoMap.put("zkUrl", zkURL);
DataFrame df = sqlContext.read().format("org.apache.phoenix.spark").options(phoenixInfoMap).load();
JavaRDD<Row> tableRows = df.toJavaRDD();
JavaPairRDD<String, AccountModel> dbData = tableRows.mapToPair(
new PairFunction<Row, String, String>()
{
@Override
public Tuple2<String, String> call(Row row) throws Exception
{
return new Tuple2<String, String>(row.getAs("ID"), row.getAs("NAME"));
}
});
Ora la mia domanda - Diciamo che il file ha 2 milioni di voci univoche corrispondenti alla tabella. L'intera tabella viene caricata in memoria come RDD o solo i corrispondenti 2 milioni di record dalla tabella verranno caricati in memoria come RDD?
Ciao @Mohan, per favore fammi sapere la dipendenza della build per il 'DataFrame df = sqlContext.read(). Format (" org.apache.phoenix.spark "). Options (phoenixInfoMap) .load()' metodo . Sto facendo lo stesso, ma ottenendo 'java.lang.NoSuchMethodError' – Explorer