1

我尝试使用这个问题将 rdd 对象转换为 spark 中的数据框。我的用例中的类包含 100 多个参数(列)

case class MyClass(val1: String, ..., val104: String )

    val df = rdd.map({ 
      case Row(val1: String, ..., val104: String) => MyClass(val1, ..., val104)
    }).toDF("col1_name", ..., "col104_name")

我收到此错误:未应用模式的参数过多,最大值 = 22

有人可以帮我举一个具体的例子吗?我正在使用 spark 1.6 和 scala 。谢谢

4

1 回答 1

2

您的问题是将案例类限制为 22 个字段。

您需要将案例类定义为更结构化的数据类型,以便只有 22 个顶级字段(但其中一些可能再次成为案例类)。

完成此操作后,您可以使用您的Row(它本身不能与 104 个字段进行模式匹配,您必须使用row(0), row(1), ..., row(103))来构建您的MyClass.

于 2017-04-03T11:24:12.157 回答