value option 不是 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")

已成功创建奥运会数据帧。

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

调用csv方法后,你已经有一个数据帧,并且数据已经"读入"火花,因此在那里设置选项没有意义。

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

在第一组代码中:在调用"读取"时csv("/FileStore/tables/Soccer_Data_Set_c46d1.txt"(' 方法,您将获得"org.apache.spark.sql.Dataset"对象作为返回值。此类不定义您稍后尝试调用的任何"选项(("方法('csv(..(。选项("推断模式", "true"('(。因此,编译器正在限制您并引发错误。

请参考:数据集类API,其中找不到"option(("方法的定义

在第二组代码中:关于调用'spark。read"方法,你将获得'org.apache.spark.sql.DataFrameReader'对象作为返回值。此类已经定义了一些重载的"选项"方法,并且由于您使用的是有效方法之一,因此不会从编译器收到任何错误。

请参考 DataFrameReader 类 API,您可以在其中找到已定义的 'option((' 的重载方法。

相关内容

  • 没有找到相关文章

最新更新