Запросы Spark SQL 1.2.0 возвращают JavaRDD. Запросы Spark SQL 1.3.0 возвращают DataFrame. Преобразование DataFrame в JavaRDD с помощью DataFrame.toJavaRDD, похоже, занимает довольно много времени. Я попытался использовать DataFrame.map() и столкнулся с загадочной проблемой:
DataFrame df = sqlSC.sql(sql);
RDD<String> rdd = df.map(new AbstractFunction1<Row, String> (){
@Override
public String apply(Row t1) {
return t1.getString(0);
}
}, ?);
"?" должно быть scala.reflect.ClassTag. Я использовал ClassManifestFactory.fromClass(String.class), и это не сработало. Что я должен поставить в "?".
Кстати, пример, приведенный http://spark.apache.org/docs/1.3.0/sql-programming-guide.html, раздел Взаимодействие с RDD. Код Java не исправлен: он использовал "map(new Function() {" "Функция" там не приемлема, должна быть "Функция1".