使用Spark更改bigquery中嵌套数据的列名称

代码机器人

我正在尝试使用Spark Scala将一些数据写入BigQuery,我的spark df看起来像,

root
 |-- id: string (nullable = true)
 |-- cost: double (nullable = false)
 |-- nodes: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- settled: string (nullable = true)
 |    |    |-- constant: string (nullable = true)
 |-- status: string (nullable = true)

我试图更改数据框的结构。

val schema = StructType(Array(
  StructField("id", StringType, true),
  StructField("cost", DoubleType, true),
  StructField("nodes", StructType(Array(StructField("settled", StringType), StructField("constant", StringType)))),
  StructField("status", StringType, true)))

val actualDf = spark.createDataFrame(results, schema)

但这没有用。将其写入BigQuery时,列名如下所示,

id,成本,nodes.list.element.settled,nodes.list.element.constant,状态

是否有可能将这些列名称更改为

ID,费用,结算,常量,状态

Shu

您可以将explode节点数组转换为扁平的列结构,然后将数据帧写入bigquery。

例:

val jsn_ds=Seq("""{"id":1, "cost": "2.0","nodes":[{"settled":"u","constant":"p"}],"status":"s"}""").toDS

spark.read.json(jsn_ds).printSchema
// root
// |-- cost: string (nullable = true)
// |-- id: long (nullable = true)
// |-- nodes: array (nullable = true)
// |    |-- element: struct (containsNull = true)
// |    |    |-- constant: string (nullable = true)
// |    |    |-- settled: string (nullable = true)
// |-- status: string (nullable = true)

spark.read.json(jsn_ds).
      withColumn("expld",explode('nodes)).
      select("*","expld.*").
      drop("expld","nodes").
      show()

//+----+---+------+--------+-------+
//|cost| id|status|constant|settled|
//+----+---+------+--------+-------+
//| 2.0|  1|     s|       p|      u|
//+----+---+------+--------+-------+

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Spark中访问嵌套数据

来自分类Dev

更改嵌套数组中的数据

来自分类Dev

使用 lapply 更改数据框列表中的列名称

来自分类Dev

使用Golang将嵌套数据插入BigQuery

来自分类Dev

Spark Dataframe 中的嵌套数据透视表

来自分类Dev

当我在 Django-Rest-Framework 中获取嵌套数据时,我可以更改相关名称吗?

来自分类Dev

如何将参数传递给引用嵌套数据框的列名称的purrr ::: map?

来自分类Dev

在JSON中存储嵌套数据或使用具有唯一名称的平面结构更好吗?

来自分类Dev

AngularJS在嵌套数组中插入数据并使用特定的嵌套数组对象进行排序

来自分类Dev

如何从非嵌套数据(BigQuery 中的 Google Analytics 数据)返回正确的汇总总数

来自分类Dev

使用dplyr根据列名称更改数据框中的值?

来自分类Dev

使用Go访问嵌套数组和对象中的数据

来自分类Dev

使用NGXS在Angular中删除嵌套数据的对象

来自分类Dev

使用php从json中的嵌套数组获取数据

来自分类Dev

如何将json嵌套数据加载到bigquery中

来自分类Dev

使用索引号同时更改pandas数据框中的多个列名称(并非所有colmn名称)

来自分类Dev

Spark:如何使用来自不同数据帧的嵌套数据来查找匹配项(Scala)

来自分类Dev

展平Firebase导出到BigQuery到表中,其中有1行= 1个事件(嵌套数据内的嵌套数据)

来自分类Dev

更改新嵌套数组中的键

来自分类Dev

在MariaDB中更改列名称

来自分类Dev

Spark 1.6:使用转义的列名称删除DataFrame中的列

来自分类Dev

使用Scala在Spark sql Dataframe中读取歧义列名称

来自分类Dev

熊猫中的嵌套数据框

来自分类Dev

在firebase中查询嵌套数据

来自分类Dev

从嵌套数组中获取数据

来自分类Dev

过滤字典中的嵌套数据

来自分类Dev

在vuetify中显示嵌套数据

来自分类Dev

无法获取嵌套数据中的密钥

来自分类Dev

在假定的字典中访问嵌套数据

Related 相关文章

  1. 1

    在Spark中访问嵌套数据

  2. 2

    更改嵌套数组中的数据

  3. 3

    使用 lapply 更改数据框列表中的列名称

  4. 4

    使用Golang将嵌套数据插入BigQuery

  5. 5

    Spark Dataframe 中的嵌套数据透视表

  6. 6

    当我在 Django-Rest-Framework 中获取嵌套数据时,我可以更改相关名称吗?

  7. 7

    如何将参数传递给引用嵌套数据框的列名称的purrr ::: map?

  8. 8

    在JSON中存储嵌套数据或使用具有唯一名称的平面结构更好吗?

  9. 9

    AngularJS在嵌套数组中插入数据并使用特定的嵌套数组对象进行排序

  10. 10

    如何从非嵌套数据(BigQuery 中的 Google Analytics 数据)返回正确的汇总总数

  11. 11

    使用dplyr根据列名称更改数据框中的值?

  12. 12

    使用Go访问嵌套数组和对象中的数据

  13. 13

    使用NGXS在Angular中删除嵌套数据的对象

  14. 14

    使用php从json中的嵌套数组获取数据

  15. 15

    如何将json嵌套数据加载到bigquery中

  16. 16

    使用索引号同时更改pandas数据框中的多个列名称(并非所有colmn名称)

  17. 17

    Spark:如何使用来自不同数据帧的嵌套数据来查找匹配项(Scala)

  18. 18

    展平Firebase导出到BigQuery到表中,其中有1行= 1个事件(嵌套数据内的嵌套数据)

  19. 19

    更改新嵌套数组中的键

  20. 20

    在MariaDB中更改列名称

  21. 21

    Spark 1.6:使用转义的列名称删除DataFrame中的列

  22. 22

    使用Scala在Spark sql Dataframe中读取歧义列名称

  23. 23

    熊猫中的嵌套数据框

  24. 24

    在firebase中查询嵌套数据

  25. 25

    从嵌套数组中获取数据

  26. 26

    过滤字典中的嵌套数据

  27. 27

    在vuetify中显示嵌套数据

  28. 28

    无法获取嵌套数据中的密钥

  29. 29

    在假定的字典中访问嵌套数据

热门标签

归档