rdd对象中的数据框参数太多

Posted

技术标签:

【中文标题】rdd对象中的数据框参数太多【英文标题】:dataframe too many arguments in the rdd object 【发布时间】:2017-04-03 11:17:47 【问题描述】:

我尝试使用this question 将 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")

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

谁能帮我举个具体的例子;我正在使用 spark 1.6 和 scala 。 谢谢你

【问题讨论】:

你可以参考这个问题***.com/questions/41799147/… 我读过这个问题,但他们需要一个 csv 文件,但我没有使用它;我正在使用 xl3 文件 case 类的问题是它在 scala 版本 中有 22 个字段的限制 【参考方案1】:

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

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

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

【讨论】:

以上是关于rdd对象中的数据框参数太多的主要内容,如果未能解决你的问题,请参考以下文章

处理存储在 RDD [String] 中的记录时,spark collect 方法花费了太多时间

使用 rdd 函数修改 pyspark 中的数据框

如何将 RDD [GenericRecord] 转换为 scala 中的数据框?

PySpark:将 RDD 转换为数据框中的列

pyspark中的RDD到DataFrame(来自rdd的第一个元素的列)

减少 pyspark 数据框中的依赖项数量