Scala 如何将数据帧列转换为序列
我有一个数据帧,如下所示:Scala 如何将数据帧列转换为序列,scala,apache-spark,dataframe,apache-spark-sql,Scala,Apache Spark,Dataframe,Apache Spark Sql,我有一个数据帧,如下所示: +-----+--------------------+ |LABEL| TERM| +-----+--------------------+ | 4| inhibitori_effect| | 4| novel_therapeut| | 4| antiinflammator...| | 4| promis_approach| | 4| cell_function| | 4|
+-----+--------------------+
|LABEL| TERM|
+-----+--------------------+
| 4| inhibitori_effect|
| 4| novel_therapeut|
| 4| antiinflammator...|
| 4| promis_approach|
| 4| cell_function|
| 4| cell_line|
| 4| cancer_cell|
我想通过将所有术语作为序列来创建一个新的数据帧,以便我可以将它们与Word2vec一起使用。即:
+-----+--------------------+
|LABEL| TERM|
+-----+--------------------+
| 4| inhibitori_effect, novel_therapeut,..., cell_line |
因此,我希望应用以下示例代码:
到目前为止,我已经尝试将df转换为RDD并映射它。然后我无法将其重新转换为df
提前谢谢
编辑:
您可以使用
collect\u list
或collect\u set
功能:
import org.apache.spark.sql.functions.{collect_list, collect_set}
df.groupBy($"label").agg(collect_list($"term").alias("term"))
在Spark<2.0中需要
HiveContext
,而在Spark 2.0+中,您必须在SessionBuilder
中启用配置单元支持。请参见我正在使用Spark 1.4.1-hadoop2.6.0.jar。我已经试过了,从上面的编辑文章可以看出。仍然无法使用这些功能。我遗漏了什么?据我记忆所及,这些在1.4中是不可用的(不过你真的应该更新。从那时起,性能和功能有了巨大的提升,更不用说即将到来的2.0引入了一些突破性的更改)。在1.4中,您应该能够使用原始SQL查询,例如。但是,这次我得到了以下错误:javax.jdo.JDOFatalUserException:Class org.datanucleus.api.jdo.JDOPersistenceManagerFactory未找到是的,它终于工作了。没有将所有必需的jar文件放在spark/lib文件夹中是我的错。使用时我所有的问题都解决了。谢谢@zero323!
import org.apache.spark.sql.functions.{collect_list, collect_set}
df.groupBy($"label").agg(collect_list($"term").alias("term"))