toDF 的值不是 org.apache.spark.rdd.RDD 的成员

2024-03-19

例外 :

val people = sc.textFile("resources/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt)).toDF()
value toDF is not a member of org.apache.spark.rdd.RDD[Person]

Here is TestApp.scala file:

package main.scala

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf


case class Record1(k: Int, v: String)


object RDDToDataFramesWithCaseClasses {

    def main(args: Array[String]) {
        val conf = new SparkConf().setAppName("Simple Spark SQL Application With RDD To DF")

        // sc is an existing SparkContext.
        val sc = new SparkContext(conf)

        val sqlContext = new SQLContext(sc)

        // this is used to implicitly convert an RDD to a DataFrame.
        import sqlContext.implicits._

        // Define the schema using a case class.
        // Note: Case classes in Scala 2.10 can support only up to 22 fields. To work around this limit,package main.scala

And TestApp.scala

import org.apache.spark.SparkContext    
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf


case class Record1(k: Int, v: String)


object RDDToDataFramesWithCaseClasses {
    def main(args: Array[String]) {
        val conf = new SparkConf().setAppName("RDD To DF")

        // sc is an existing SparkContext.
        // you can use custom classes that implement the Product interface.
        case class Person(name: String, age: Int)

        // Create an RDD of Person objects and register it as a table.
        val people = sc.textFile("resources/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt)).toDF() 
        people.registerTempTable("people")

        // SQL statements can be run by using the sql methods provided by sqlContext.
        val teenagers = sqlContext.sql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19")

        // The results of SQL queries are DataFrames and support all the normal RDD operations.
        // The columns of a row in the result can be accessed by field index:
        teenagers.map(t => "Name: " + t(0)).collect().foreach(println)

        // or by field name:
        teenagers.map(t => "Name: " + t.getAs[String]("name")).collect().foreach(println)

        // row.getValuesMap[T] retrieves multiple columns at once into a Map[String, T]

        teenagers.map(_.getValuesMap[Any](List("name", "age"))).collect().foreach(println)

        // Map("name" -> "Justin", "age" -> 19)

    }
}

And SBT File

name := "SparkScalaRDBMS"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.5.1"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "1.5.1"

现在我找到了原因,您应该在对象中定义案例类,并在主函数之外定义案例类。看这里 https://community.cloudera.com/t5/Advanced-Analytics-Apache-Spark/Spark-Scala-Error-value-toDF-is-not-a-member-of-org-apache-spark/td-p/29878

好吧,我终于解决了这个问题。需要做两件事:

  1. 导入隐式:请注意,只有在创建 org.apache.spark.sql.SQLContext 实例后才应执行此操作。应该写成:

    val sqlContext= new org.apache.spark.sql.SQLContext(sc)

    import sqlContext.implicits._

  2. 将案例类移到方法之外:案例类(您可以使用它来定义 DataFrame 的架构)应该在需要它的方法之外定义。您可以在这里阅读更多相关信息:https://issues.scala-lang.org/browse/SI-6649 https://issues.scala-lang.org/browse/SI-6649

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

toDF 的值不是 org.apache.spark.rdd.RDD 的成员 的相关文章

随机推荐

  • 如何更改字符串日期的日期格式

    我有像这样的字符串形式的日期 String date 11 12 2018 我想把它改成 2018 12 11 具有相同的变量 因此 我尝试了下面的代码 但它没有给出我期望的输出 String date 11 12 2018 SimpleD
  • 在 C 中,作为参数传递时,“&function”和“function”之间有什么区别?

    例如 include
  • File.Open的默认目录是什么?

    我有这个代码 Stream f File Open data majid FileMode OpenOrCreate FileAccess ReadWrite 文件将在哪里创建 From the File OpenMSDN 文档 http
  • 在哪里可以下载旧版本的 Dart SDK

    我需要获取旧版本的 Dart SDK 来解决问题 具体来说是 Dart SDK 1 5 1 但 dartlang 当前的稳定版本是 1 6 0 是否有一个 URL 可以让我获取所有过去的 Linux 或 MacO 版本的 SDK Updat
  • 这些是 nativecrypto 错误消息吗?

    当我的 Android 手机和服务器之间建立 TLS 连接时 我得到以下信息nativecrypto error messages in logcat 06 30 21 55 06 565 E NativeCrypto 24826 ssl
  • *如果使用 v6 ImageList 控件,.bmp 会丢失透明背景

    抱歉 我的英语不是很好 我需要在我的 D7 应用程序中使用半透明位图图片 所以 我应该使用 XPManifest 和 ImageList version6 而不是 5 8 标准版 但在这种情况下 我遇到了一个问题 当我从流中加载图像时 所有
  • 如何使用标量手动更改 Android AudioTrack 流的增益级别?

    我正在使用 Android AudioTrack 对象来传输 16 位单声道 PCM 文件 我的代码从 DataInputStream 读取双精度值 将其转换为 8 字节 然后将该 8 字节保存到缓冲区以写入 AudioTrack 这很好用
  • 相同模块不同外壳。为什么?

    Windows 上的 minikube 和 docker machine 在确定 hyper v 模块是否可用时出现了一些问题 了解更多信息 https github com kubernetes minikube issues 2634
  • 将文件夹中的所有文件重命名为编号列表 1.jpg 2.jpg [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 询问代码的问题必须对所解决的问题表现出最低限度的了解 包括尝试的解决方案 为什么它们不起作用以及预期结果 也可以看看 Stack Over
  • 返回 404 的 Rest Web 服务

    这是我第一次使用 Eclipse 这让我非常愤怒 我安装了 Tomcat 6 0 下载了 Jersey 库 并按照以下教程进行操作 http www vogella com articles REST article html first
  • 创建图标按钮 - Android

    我想创建一个小图标按钮 如下所述在材料指南的这一章中 https www google com design spec components buttons html buttons other buttons 但我找不到任何关于如何做到这
  • 我可以调整 tkMessagebox 创建的消息框的大小吗?

    我想用固定宽度的 tkMessagebox 创建信息对话 我在 tkMessagebox showinfo 函数中没有看到任何可以处理此问题的选项 有什么办法吗 谢谢 option add 可能仅适用于 Linux 操作系统 但您可以控制字
  • Javascript:xmlhttprequest 随机卡在就绪状态 1

    我一直在开发一个 Windows 小工具 即 浏览器 是 Internet Explorer 用于查询指定子网地址以获取信息 现在 它有时会以相对较快的速度 大约每 5 秒 执行此操作 而且效果很好 然而 有时它会卡在就绪状态 1 并且永远
  • 使用 Popen.stdin 执行多个命令

    我想使用管道在从 python 脚本启动的独立应用程序中执行多个命令 我可以可靠地将命令传递到程序的标准输入的唯一方法是使用 Popen communicate 但它会在命令执行后关闭程序 如果我使用 Popen stdin write 则
  • 如何列出导入的模块及其版本?

    我需要列出所有导入的模块及其版本 我的一些代码仅适用于特定版本 我想保存包的版本 以便将来再次查找 列出包的名称有效 modules list set sys modules set globals print modules 但如果我现在
  • 注入自动映射器

    我一直致力于将 AutoMapper 注入控制器 我喜欢 Code Camp Server 的实现 它围绕 AutoMapper 的 IMappingEngine 创建一个包装器 依赖注入是使用 StructureMap 完成的 但我需要在
  • 有什么办法让 gmaps4rails 在街景中打开地图吗?

    我尝试过更改缩放级别 但它始终保持在地图模式 在wiki上也找不到任何信息 任何帮助或其他建议将不胜感激 最终只使用了 Google 的 Javascript API 事情是这样的 pos new google maps LatLng va
  • 如何将 Knockout js 模型绑定到向导风格的 UI

    我正在使用 Knockout js 我有一个包含对象数组的视图模型 我希望允许用户使用向导样式界面编辑其中一个对象 我遇到的问题是向导将根据所做的选择显示不同的步骤 例如 如果用户在步骤 1 中选择 是 则我将显示步骤 2a 如果用户在步骤
  • 在读取文件之前检查文件是否已打开?

    我正在尝试制作一个小程序 它以非常频繁的间隔 每秒几次 读取本地文件系统 用户计算机 上的文件 然后通过 javascript 将文件的内容提供给网页 小程序需要读取的文件由用户计算机上的程序高频更新 我担心的是 如果小程序在文件更新过程中
  • toDF 的值不是 org.apache.spark.rdd.RDD 的成员

    例外 val people sc textFile resources people txt map split map p gt Person p 0 p 1 trim toInt toDF value toDF is not a mem