繁体   English   中英

value 选项不是 org.apache.spark.sql.DataFrame 的成员

[英]value option is not a member of org.apache.spark.sql.DataFrame

我正在尝试在 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 dataframe 已成功创建。

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

在你调用csv方法之后,你已经有了一个 DataFrame,并且数据已经被“读入”spark,所以在那里设置选项没有意义。

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

在第一组代码中:调用 '读取。 csv ("/FileStore/tables/Soccer_Data_Set_c46d1.txt") ' method you will be getting 'org.apache.spark.sql.Dataset' object as return value. 此 class 未定义您稍后尝试调用的任何 'option()' 方法('csv(..).option("inferSchema", "true")')。 因此,编译器正在限制您并引发错误。

请参考: 数据集 class API在这里您找不到“option()”方法的定义

在第二组代码中: On invoking ' spark. read ' 方法你会得到 'org.apache.spark.sql.DataFrameReader' object 作为返回值。 这个 class 已经定义了一些重载的“选项”方法,并且当您使用其中一种有效方法时,您不会从编译器中收到任何错误。

请参考DataFrameReader class API在这里您可以找到定义了“option()”的重载方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM