数据帧在rdd对象中有太多参数

时间:2017-04-03 11:17:48

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

我尝试使用this question将rdd对象转换为spark中的dataframe。我的用例中的类包含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")

我收到此错误:对于unapply模式的参数太多,最大值= 22

有人可以用一个具体的例子来帮助我;我正在使用带有scala的spark 1.6。 谢谢

1 个答案:

答案 0 :(得分:2)

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

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

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