使用数据框的架构生成Spark Map数据框

港口

我有一个从JSON对象创建的数据框。我可以查询此数据帧并将其写入镶木地板。

由于我推断出架构,因此我不一定知道数据框中的内容。

有没有办法列名出来或使用其自己的模式映射数据框?

// The results of SQL queries are DataFrames and support all the normal  RDD operations.
// The columns of a row in the result can be accessed by field index:
df.map(t => "Name: " + t(0)).collect().foreach(println)

// or by field name:
df.map(t => "Name: " + t.getAs[String]("name")).collect().foreach(println)

// row.getValuesMap[T] retrieves multiple columns at once into a Map[String, T]
df.map(_.getValuesMap[Any](List("name", "age"))).collect().foreach(println)
// Map("name" -> "Justin", "age" -> 19)

我想做类似的事情

df.map (_.getValuesMap[Any](ListAll())).collect().foreach(println)
// Map ("name" -> "Justin", "age" -> 19, "color" -> "red")

不知道列的实际数量或名称。

零323

好吧,您可以,但是结果却毫无用处:

val df = Seq(("Justin", 19, "red")).toDF("name", "age", "color")

def getValues(row: Row, names: Seq[String]) = names.map(
  name => name -> row.getAs[Any](name)
).toMap

val names = df.columns
df.rdd.map(getValues(_, names)).first

// scala.collection.immutable.Map[String,Any] = 
//   Map(name -> Justin, age -> 19, color -> red)

要获得实际上有用的东西,可以在SQL类型和Scala类型之间进行适当的映射。在简单的情况下,这并不难,但在一般情况下却很难。例如,有一个内置类型可以用来表示任意类型struct可以使用一些元编程来做到这一点,但是可以说这并不值得大惊小怪。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用数据框的架构生成Spark Map数据框

来自分类Dev

在Apache Spark中以编程方式生成架构和数据框的数据

来自分类Dev

使用持有具有架构对象的行来创建Spark数据框

来自分类Dev

Spark:使用Map从复杂的数据框架构中获取数据

来自分类Dev

For循环Spark数据框

来自分类Dev

Spark数据框-Python

来自分类Dev

Apache Spark 数据框

来自分类Dev

过滤 Spark 数据框

来自分类Dev

Spark 使用 where 条件更新数据框

来自分类Dev

使用pyspark在数据框的架构中搜索

来自分类Dev

使用lapply或Map处理数据框列表中的相同变量

来自分类Dev

对 Pandas 系列或数据框的子集使用 Map 函数

来自分类Dev

在Spark数据框中生成可重现的唯一ID

来自分类Dev

spark-solr中的spark数据框并集数据框

来自分类Dev

Spark展平数据框

来自分类Dev

连接大型的Spark数据框

来自分类Dev

Spark展平数据框

来自分类Dev

如何生成新的数据框?

来自分类Dev

python生成熊猫数据框

来自分类Dev

将数据框的架构更改为其他架构

来自分类Dev

TypeError将Pandas数据框转换为Spark数据框

来自分类Dev

将Pandas数据框转换为Spark数据框错误

来自分类Dev

根据系列内容和数据框生成布尔数据框

来自分类Dev

如何使用从循环生成的数组作为数据框中的列来创建数据框

来自分类Dev

使用Purrr从现有数据框中生成新数据框

来自分类Dev

如何使用现有数据框的具体信息生成新数据框

来自分类Dev

数据框内的数据框?

来自分类Dev

使用Scala计算Spark数据框中的列组合实例

来自分类Dev

使用Spark数据框进行单元测试