" Object java.lang.String not a value" Scala 代码中的错误



我的scala程序中有以下一段代码,它使用Flink的Table API。

val custTS = new CsvTableSource("D:\input\customerinfo.csv", 
                               Array("customerId","name","address","zip"),
                               Array(String,String,String,Long))

编辑器在三个"字符串"的第三行显示错误,并显示错误消息"Object java.lang.String not a value"。"字符串"在代码的其余部分的许多其他地方使用。但它不会在其他任何地方抛出错误。我看到了几个提到类似问题的 Stackoverflow 问题,但我无法根据提到的解决方案解决这个问题。程序中的导入如下所示。

import org.apache.flink.api.scala._
import org.apache.flink.table.api.TableEnvironment
import org.apache.flink.table.api.scala._
import org.apache.flink.table.sinks.CsvTableSink
import org.apache.flink.table.sources.CsvTableSource

我在 Flink 的许多其他 scala 程序中使用了"String"。但是我在任何这些程序中都没有遇到这样的错误。

首先,您不能在 Array 中使用类型(在本例中为 String (作为值。集合存储对象。您应该传递类型 Array[TypeInformation[_]] 的数组。

所以它应该看起来像:

import org.apache.flink.table.api.Types
val custTS = new CsvTableSource(
  "D:\input\customerinfo.csv",
  Array("customerId", "name", "address", "zip"),
  Array[TypeInformation[_]](Types.STRING, Types.STRING, Types.STRING, Types.LONG)
  )

不幸的是,现在您必须显式提供Array的类型。出于原因,您可以查看此讨论。

相关内容

  • 没有找到相关文章

最新更新