apache flink在scala代码中出现“object java.lang.string not a value”错误

dauxcl2d  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(451)

我在scala程序中使用了flink的TableAPI,下面是一段代码。

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

编辑器在第三行显示三个'string'的错误,错误消息为“object java.lang.string not a value”。'在代码的其余部分,string'用于许多其他地方。但它不会在其他任何地方抛出错误。我看到了两个stackoverflow问题,其中提到了类似的问题,但是我无法根据所提到的解决方案来解决这个问题。计划中的进口如下所示。

  1. import org.apache.flink.api.scala._
  2. import org.apache.flink.table.api.TableEnvironment
  3. import org.apache.flink.table.api.scala._
  4. import org.apache.flink.table.sinks.CsvTableSink
  5. import org.apache.flink.table.sources.CsvTableSource

我在很多其他scala程序中使用了“string”作为flink。但我在这些程序中都没有遇到过这样的错误。

unftdfkk

unftdfkk1#

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

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

不幸的是,现在必须显式地为 Array . 至于原因,你可以看看这个讨论。

相关问题