spark 是否按字母顺序在内部重新排列数据框中字段的顺序?

高拉夫·古普塔

我正在创建一个火花流作业,它从 Kafka 主题读取 JSON 消息。对于我从 Dstream 获得的每个 RDD,我正在创建一个数据帧。我的要求是将此数据帧写入 hdfs 路径。在写入之前,我需要检查此消息的架构是否格式正确。因此,我创建了一个 StructType customSchema,其预期字段的顺序与 Kafka 主题中的 JSON 消息中的顺序相同。我试图比较两者,但这不起作用。即使所有字段都以正确的顺序存在,结果为假。

我有一个与 Kafka 主题格式相同的 json 文件。

{"transactionId":"12345","accountName":"XXX1","sessionKey":"WEB","description":"INR"}

我在它周围创建了一个数据框

val df=spark.read.json("/data/path/sample/")

scala> df.printSchema
root
 |-- accountName: string (nullable = true)
 |-- description: string (nullable = true)
 |-- sessionKey: string (nullable = true)
 |-- transactionId: string (nullable = true)

注意:当我打印我创建的 df 模式时,它是按字母顺序打印的。

我创建了一个 StructType 的 customSchema

scala> val schema1=  StructType( Array (StructField("transactionId",StringType, true),StructField("accountName",StringType, true),StructField("sessionKey",StringType, true),StructField("description",StringType, true)))
schema1: org.apache.spark.sql.types.StructType = StructType(StructField(transactionId,StringType,true), StructField(accountName,StringType,true), StructField(sessionKey,StringType,true), StructField(description,StringType,true))

当我尝试匹配它时,结果为 false

scala> val d=df.schema==schema1
            d: Boolean = false

使用 .equals 方法也会导致结果为 false 现在,如果我以与 printSchema 打印相同的方式创建 customSchema,

scala> val schema2=  StructType( Array (StructField("accountName",StringType, true),StructField("description",StringType, true),StructField("sessionKey",StringType, true),StructField("transactionId",StringType, true)))
schema2: org.apache.spark.sql.types.StructType = StructType(StructField(accountName,StringType,true), StructField(description,StringType,true), StructField(sessionKey,StringType,true), StructField(transactionId,StringType,true))

如果我现在比较两者,它会按预期正常工作。

scala> val j=df.schema==schema2
            j: Boolean = true

因此,根据我的观察,spark 是否会按字母顺序在内部重新排列字段的顺序,因为我在文档中找不到它。

未定义的变量

如果未提供,Spark Json 会推断架构。如果需要按特定顺序排列select是更好的选择。

val colsArr = Array("col1","col2","col3")
val df = df.select(colsArr.head,colsArr.tail:_*)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在pandas数据框中基于顺序的列重新排列

来自分类Dev

重新分区更改Spark中数据帧的行顺序

来自分类Dev

seqecreate按字母顺序重新排列事件

来自分类Dev

如何合并数据框以保持Spark或Python中的顺序

来自分类Dev

Spark中的键值对顺序

来自分类Dev

在Spark中按交替顺序分组

来自分类Dev

根据字母顺序重新排列列数据

来自分类Dev

如何在jQuery选择的下拉列表中按字母顺序重新排列<options>

来自分类Dev

Spark中的groupByKey是否保留原始顺序?

来自分类Dev

Scala Spark数据框按字段合并

来自分类Dev

按索引号的一组顺序重新排列我的数据框行

来自分类Dev

按列名重新排列列的顺序

来自分类Dev

Spark Streaming中的顺序处理

来自分类Dev

减少时,Spark Streaming是否提供按日期顺序的保证

来自分类Dev

在熊猫数据框中重新排列列的非连续顺序

来自分类Dev

在Python中Concat多个数据框按字母重新排列列

来自分类Dev

在数据透视表中重新排列顺序

来自分类Dev

Scala Spark数据帧连接结果不按首选顺序

来自分类Dev

尽管各组之间共享值,如何按不同的组按字母顺序重新排列行?

来自分类Dev

SPARK 动作顺序

来自分类Dev

HiveContext spark如何在内部工作?

来自分类Dev

在Intellij IDEA(Android studio)中按字母顺序和优先级对代码进行重新排列

来自分类Dev

Spark:坚持和重新分区顺序

来自分类Dev

按字母顺序重新排列 URL 查询字符串

来自分类Dev

两个数据框的联合在 Spark 中更改列顺序

来自分类Dev

Spark DataFrame:是否保证 withColumn 的顺序?

来自分类Dev

检查python中YAML文件中的数据是否按字母顺序排列

来自分类Dev

按字母顺序排列数据

来自分类Dev

如何在Python中根据字母重新排列行的顺序

Related 相关文章

  1. 1

    在pandas数据框中基于顺序的列重新排列

  2. 2

    重新分区更改Spark中数据帧的行顺序

  3. 3

    seqecreate按字母顺序重新排列事件

  4. 4

    如何合并数据框以保持Spark或Python中的顺序

  5. 5

    Spark中的键值对顺序

  6. 6

    在Spark中按交替顺序分组

  7. 7

    根据字母顺序重新排列列数据

  8. 8

    如何在jQuery选择的下拉列表中按字母顺序重新排列<options>

  9. 9

    Spark中的groupByKey是否保留原始顺序?

  10. 10

    Scala Spark数据框按字段合并

  11. 11

    按索引号的一组顺序重新排列我的数据框行

  12. 12

    按列名重新排列列的顺序

  13. 13

    Spark Streaming中的顺序处理

  14. 14

    减少时,Spark Streaming是否提供按日期顺序的保证

  15. 15

    在熊猫数据框中重新排列列的非连续顺序

  16. 16

    在Python中Concat多个数据框按字母重新排列列

  17. 17

    在数据透视表中重新排列顺序

  18. 18

    Scala Spark数据帧连接结果不按首选顺序

  19. 19

    尽管各组之间共享值,如何按不同的组按字母顺序重新排列行?

  20. 20

    SPARK 动作顺序

  21. 21

    HiveContext spark如何在内部工作?

  22. 22

    在Intellij IDEA(Android studio)中按字母顺序和优先级对代码进行重新排列

  23. 23

    Spark:坚持和重新分区顺序

  24. 24

    按字母顺序重新排列 URL 查询字符串

  25. 25

    两个数据框的联合在 Spark 中更改列顺序

  26. 26

    Spark DataFrame:是否保证 withColumn 的顺序?

  27. 27

    检查python中YAML文件中的数据是否按字母顺序排列

  28. 28

    按字母顺序排列数据

  29. 29

    如何在Python中根据字母重新排列行的顺序

热门标签

归档