【发布时间】:2015-03-16 02:39:51
【问题描述】:
Spark SQL 1.2.0 查询返回 JavaRDD。 Spark SQL 1.3.0 查询返回 DataFrame。通过 DataFrame.toJavaRDD 将 DataFrame 转换为 JavaRDD 似乎需要相当长的时间。我尝试使用 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 的 Interoperating with RDDs 部分 Java 代码给出的示例未更正:它使用了“map(new Function() {”。“Function”是那里不可接受。它应该是“Function1”。
【问题讨论】:
-
这是 Java 8 for Spark 的问题,它依赖于 EsotericSoftware/reflectasm(目前仅支持 Java 7):issues.apache.org/jira/browse/SPARK-6152。
标签: sql scala apache-spark rdd