【问题标题】:Scala: foreachPartition passing Object type instead of Iterator[Row] to methodScala:foreachPartition 将 Object 类型而不是 Iterator [Row] 传递给方法
【发布时间】:2020-07-29 23:12:36
【问题描述】:

我是 Scala 新手。我正在尝试在分区数据帧上使用foreachPartition。我正在尝试在foreachPartition 中调用一个方法(makePreviewApiCall)。

这是被调用方法的签名:

def makePreviewApiCall(
  partitioned_df:Iterator[Row],
  header_df:DataFrame, 
  sqlcontext:SQLContext): Unit = {...}

我正在尝试从 foreachpartition 调用上述方法,如下所示:

partitioned_df.foreachPartition(rddpartition => makePreviewApiCall(rddpartition, header_df, sqlcontext))

我收到如下构建错误:

found   : Object
required: Iterator[org.apache.spark.sql.Row]
one error found

这里有什么问题? rddpartition 的类型为 Iterator[Row]。为什么它被视为Object

【问题讨论】:

标签: scala apache-spark apache-spark-sql


【解决方案1】:

看起来现有的两种方法(Scala 特定与 Java 特定)与 Scala 2.12 冲突,而 Scala 2.11 没有。 您可以在 lambda 中明确提及类型,如

.foreachPartition((part: Iterator[Row]) => {

【讨论】:

    猜你喜欢
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多