繁体   English   中英

在Scala / SPARK中将Dataframe转换为RDD的有效方法?

[英]Efficient way to convert Dataframe to RDD in Scala/SPARK?

我有一个dataFrame = [CUSTOMER_ID ,itemType, eventTimeStamp, valueType] RDD[(String, (String, String, Map[String, Int]))]通过执行以下操作将其转换为RDD[(String, (String, String, Map[String, Int]))]

 val tempFile = result.map( {
     r => {
         val customerId = r.getAs[String]( "CUSTOMER_ID" )
         val itemType = r.getAs[String]( "itemType" )
         val eventTimeStamp = r.getAs[String]( "eventTimeStamp" )
         val valueType = r.getAs[Map[String, Int]]( "valueType" )
         (customerId, (itemType, eventTimeStamp, valueType))
          }
          } )

由于我的投入很大,因此需要很多时间。 有什么有效的方法可以将df转换为RDD[(String, (String, String, Map[String, Int]))]吗?

您描述的操作将变得便宜。 进行一些getAs和分配一些元组几乎是免费的。 如果运行缓慢,则可能由于数据量大(7T)而不可避免。 还要注意,不能在RDD上执行Catalyst优化,因此在DataFrame操作的下游包括这种.map通常会阻止其他Spark快捷方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM