Rdd到数据帧,其中模式基于头文件通过编程

问题描述 投票:-1回答:1

我有下面的RDD,很多都喜欢。

val csv = sc.parallelize(Array(
  "col1, col2, col3",
  "1, cat, dog",
  "2, bird, bee"))

我想将RDD转换为一个数据帧,在该数据帧中,将基于RDD的第一行动态/以编程方式创建模式。

我想将逻辑应用于多个类似的RDD,并且不能使用案例类以编程方式指定架构,也不能使用spark-csv从一开始就将数据加载为数据框。

我已经创建了一个展平的数据框,但是想知道在创建数据框时如何拆分各个列吗?

val header= csv.first()
val data = full_csv.mapPartitionsWithIndex {
  (idx, iter) => if (idx == 0) iter.drop(1) else iter 
}.toDF(header).show()
+----------------+
|col1, col2, col3|
+----------------+
|     1, cat, dog|
|    2, bird, bee|
+----------------+
scala dataframe apache-spark apache-spark-sql rdd
1个回答
0
投票

[在大多数情况下,最好直接将csv文件作为数据帧读取,例如:Spark - load CSV file as DataFrame?

© www.soinside.com 2019 - 2024. All rights reserved.