sql - 如何为 Spark SQL DataFrame 映射构造 ClassTag?

标签 sql scala apache-spark rdd

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 给出的例子的 与 RDD 互操作 部分 Java 代码未更正:它使用了“map(new Function() {”。那里的“Function”是 Not Acceptable 。它应该是“Function1”。

最佳答案

尝试这个:

RDD<String> rdd = df.map(new AbstractFunction1<Row, String> (){

    @Override
    public String apply(Row t1) {
        return t1.getString(0);
    }


}, scala.reflect.ClassManifestFactory.fromClass(String.class));

关于sql - 如何为 Spark SQL DataFrame 映射构造 ClassTag?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29068864/

相关文章:

mysql在同一语句中插入选择

string - Scala 字符串按字符数量递减分割

java - 线程 "main"java.lang.NoSuchMethodError : scala. Predef$.refArrayOps(

hadoop - Spark Streaming 和 Spark 应用程序可以在同一个 YARN 集群中运行吗?

scala - Spark 流的迭代算法

mysql - SQL - varchar 与 int 的性能

c# - LINQ 按 x 列排序,如果为空则按 y 列排序

mysql - 计算实例的数量,并将它们放入一列中,同时按另一列进行分组

arrays - 从文本中获取矩阵的函数式方法

apache-spark - 无法从 Apache Spark SQL 1.5.2 在 SQLContext 中运行查询,得到 java.lang.NoSuchMethodError