Truy vấn Spark SQL 1.2.0 trả về JavaRDD. Các truy vấn Spark SQL 1.3.0 trả về DataFrame. Chuyển đổi DataFrame sang JavaRDD bởi DataFrame.toJavaRDD có vẻ mất khá nhiều thời gian. Tôi đã cố gắng sử dụng DataFrame.map() và gặp vấn đề khó hiểu:Làm thế nào để xây dựng ClassTag cho Spark SQL DataFrame Mapping?
DataFrame df = sqlSC.sql(sql);
RDD<String> rdd = df.map(new AbstractFunction1<Row, String>(){
@Override
public String apply(Row t1) {
return t1.getString(0);
}
}, ?);
"?" nên là scala.reflect.ClassTag. Tôi đã sử dụng ClassManifestFactory.fromClass (String.class) và nó không hoạt động. Tôi nên đặt gì ở "?"
Bằng cách này, ví dụ do http://spark.apache.org/docs/1.3.0/sql-programming-guide.html 's interoperating với RDDs phần Java Mã không được khắc phục: Đó là sử dụng 'bản đồ (Chức năng mới() {' The 'Chức năng' là không thể chấp nhận được ở đó Nó nên.. là "Function1"
Đây là một vấn đề với Java 8 cho Spark mà phụ thuộc vào EsotericSoftware/reflectasm (Hiện tại chỉ hỗ trợ Java 7) : https://issues.apache.org/jira/browse/SPARK-6152. –