【问题标题】:value option is not a member of org.apache.spark.sql.DataFramevalue 选项不是 org.apache.spark.sql.DataFrame 的成员
【发布时间】:2020-06-19 04:44:01
【问题描述】:

我正在尝试在 scala 中创建一个数据框,如下所示:

var olympics =spark.read.csv("/FileStore/tables/Soccer_Data_Set_c46d1.txt").option("inferSchema","true").option("header","true").option("delimiter",",")

当我提交代码时,它会抛出 value option is not a member of org.apache.spark.sql.DataFrame 错误。

但是当我修改代码如下:

var olympics = spark.read.option("inferSchema","true").option("header","true").option("delimiter",",").csv("/FileStore/tables/Soccer_Data_Set_-c46d1.txt")

olympics 数据框已成功创建。

有人可以帮我理解这两个代码sn-ps之间的区别吗?

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    调用csv 方法后,您已经有了一个DataFrame,并且数据已经“读入”到spark,因此在那里设置选项没有意义。

    在第二个示例中,您调用 read 来“说”您希望 spark 读取文件,设置此类读取的属性,然后实际读取文件。

    【讨论】:

      【解决方案2】:

      在第一组代码中:在调用 'read.csv("/FileStore/tables/Soccer_Data_Set_c46d1.txt")' 方法时,您将获得 'org .apache.spark.sql.Dataset' 对象作为返回值。此类未定义您稍后尝试调用的任何 'option()' 方法('csv(..).option("inferSchema", "true")')。所以,编译器会限制你并抛出错误。

      请参考:Dataset class API 在这里您找不到 'option()' 方法的定义

      在第二组代码中:在调用 'spark.read' 方法时,您将获得 'org.apache.spark.sql.DataFrameReader' 对象作为返回价值。此类已定义了一些重载的“选项”方法,并且当您使用其中一种有效方法时,您不会从编译器中收到任何错误。

      请参考DataFrameReader class API,在那里你可以找到'option()'的重载方法被定义。

      【讨论】:

        猜你喜欢
        • 2017-01-05
        • 1970-01-01
        • 1970-01-01
        • 2019-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-01
        相关资源
        最近更新 更多