2

我是新手,从csv文件Spark-shell创建数据框时出现此错误

 scala> val bankDF = bankrdd.toDF() bankDF.registerTempTable("bankfull")                                                                                                               
<console>:1: error: ';' expected but '.' found.                                                                                                                                       
val bankDF = bankrdd.toDF() bankDF.registerTempTable("bankfull")


                              ^                        
4

2 回答 2

1

您缺少;将 2 个语句分开的情况。

Scala 编程,第一版

在 Scala 程序中,语句末尾的分号通常是可选的。如果需要,您可以键入一个,但如果该语句单独出现在一行上,则不必键入。

另一方面,如果您在一行中编写多个语句,则需要使用分号:

  val s = "hello"; println(s)

示例工作示例Error(与您的代码完全相同):

scala> val rnd = Math.random() val n = Math.abs(rnd)
<console>:1: error: ';' expected but 'val' found.
val rnd = Math.random() val n = Math.abs(rnd)
                        ^

示例工作示例Fixed

scala> val rnd = Math.random(); val n = Math.abs(rnd)
rnd: Double = 0.5940919229549699
n: Double = 0.5940919229549699

因此,在您的情况下,您有 2 个选项可以使其工作:

选项1:

val bankDF = bankrdd.toDF(); bankDF.registerTempTable("bankfull")

选项2:

val bankDF = bankrdd.toDF()
bankDF.registerTempTable("bankfull")
with the following output:

scala> val bankDF = bankrdd.toDF(); bankDF.registerTempTable("bankfull")
warning: there was one deprecation warning; re-run with -deprecation for details
bankDF: org.apache.spark.sql.DataFrame = [value: string]
于 2018-11-04T18:24:09.487 回答
0
val bankDF = bankrdd.toDF()
bankDF.registerTempTable("bankfull")

或者

val bankDF = bankrdd.toDF().registerTempTable("bankfull")
于 2018-11-04T18:34:04.417 回答