如何在spark-xml中禁用科学计数法

MD51

使用databrick spark-xml库读取xml文件时如何禁用科学计数法。这是场景,我的XML文件包含带有空格的数字值,如下所示

<V1>42451267 </V1>

我得到的是4.2451267E7而不是42451267

我该如何解决

我的代码和xml文件在下面

val xmlLocation = "sampleFile/xml/sample.xml"
val rootTag = "RTS"
val rowTag = "COLUMNTYPE"
val sqlContext = MySparkDriver.getSqlContext().
  read.format("com.databricks.spark.xml")
if (rootTag != null && rootTag.size == 0)
  sqlContext.option("rootTag", rootTag)
sqlContext.option("rowTag", rowTag)
val xmlDF = sqlContext.load(xmlLocation)
xmlDF.show(false)

输出

[WrappedArray(4232323.0, 4.2451267E7),21-11-2000 01:04:34,NTS,212212112,100.0,100.0]

预期的

[WrappedArray(4232323, 42451267),21-11-2000 01:04:34,NTS,212212112,100.0000,100.0000]

XML文件

<RTS>
<COLUMNTYPE>
    <D1>
        <V1>4232323</V1>
        <V1>42451267 </V1>
        <V2>21-11-2000 01:04:34</V2>
        <V3>NTS</V3>
        <V4>212212112</V4>
        <V7>100.0000</V7>
        <V8>100.0000 </V8>

    </D1>
</COLUMNTYPE>
</RTS>

任何帮助将非常感激 。

杜比

TypeCast类的isLong函数无法预测数据类型,因为您的值“ 42451267”包含空格

但是,如果要将其视为长值,请定义自己的自定义架构,其中“ V1”列数据类型为StringType

val xmlLocation = "sampleFile/xml/sample.xml"
val rootTag = "RTS"
val rowTag = "COLUMNTYPE"
val sqlContext = MySparkDriver.getSqlContext().
  read.format("com.databricks.spark.xml")
if (rootTag != null && rootTag.size == 0)
  sqlContext.option("rootTag", rootTag)
sqlContext.option("rowTag", rowTag)

自定义架构

val customSchema = StructType(Array(
  StructField("D1", StructType(
    Seq(StructField("V1", ArrayType(StringType, true), true),
      StructField("V2", StringType, true),
      StructField("V3", StringType, true),
      StructField("V4", LongType, true),
      StructField("V7", DoubleType, true),
      StructField("V8", DoubleType, true))), true)))
sqlContext.schema(customSchema)

为修整值创建udf

import org.apache.spark.sql.functions._
val toTrim = udf((xs: Seq[String]) => xs.map(_.trim()))

应用udf并将类型强制转换为long

val xmlDF = sqlContext.load(xmlLocation).select(struct(
  toTrim(col("D1.V1")).cast("array<long>").alias("V1"),
  col("D1.V2"), col("D1.V3"), col("D1.V4"), col("D1.V7"), col("D1.V8"))
  .alias("D1"))
xmlDF.printSchema
xmlDF.show(false)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在hvPlot图中禁用科学计数法?

来自分类Dev

使用Perl和Excel时如何禁用科学计数法

来自分类Dev

如何在ASCII表中以科学计数法显示数字?

来自分类Dev

如何在Java中以科学计数法表示数字?

来自分类Dev

如何在python大数计算中抑制科学计数法

来自分类Dev

如何结合变量以表示C中的科学计数法?

来自分类Dev

如何从此图例ggplot中删除科学计数法

来自分类Dev

如何结合变量来表示C中的科学计数法?

来自分类Dev

如何提取行中的数字(包括科学计数法)

来自分类Dev

如何在R中阅读大量的csv(可能是科学计数法)?

来自分类Dev

PySpark-如何在csv输出中删除科学计数法

来自分类Dev

如何在nodejs / html中删除科学计数法并仅以十进制显示?

来自分类Dev

导出到Excel文件时,如何在熊猫DF中取消科学计数法?

来自分类Dev

如何在Linux或Perl中的特定列中将科学计数法更改为数字

来自分类Dev

如何在C中显示没有科学计数法的大双数?

来自分类Dev

如何防止数字以科学计数法出现

来自分类Dev

如何避免双重使用科学计数法?

来自分类Dev

如何从双重删除科学计数法

来自分类Dev

如何在js中使用科学计数法?

来自分类Dev

如何在Matplotilb条形图中打开科学计数法?

来自分类Dev

如何强制numpy数组中的数据类型脱离科学计数法

来自分类Dev

如何用科学计数法格式化数字以在Javascript中显示更少的数字?

来自分类Dev

R:禁用科学计数法

来自分类Dev

在python json.dumps输出中禁用科学计数法

来自分类Dev

(PHP)如何避免科学计数法并显示实际的大数?

来自分类Dev

如何避免科学计数法而显示完整数字?

来自分类Dev

如何关闭numpy中一列的科学计数法?

来自分类Dev

如何绑定数字并防止科学计数法?

来自分类Dev

(PHP)如何避免科学计数法并显示实际的大数?

Related 相关文章

  1. 1

    如何在hvPlot图中禁用科学计数法?

  2. 2

    使用Perl和Excel时如何禁用科学计数法

  3. 3

    如何在ASCII表中以科学计数法显示数字?

  4. 4

    如何在Java中以科学计数法表示数字?

  5. 5

    如何在python大数计算中抑制科学计数法

  6. 6

    如何结合变量以表示C中的科学计数法?

  7. 7

    如何从此图例ggplot中删除科学计数法

  8. 8

    如何结合变量来表示C中的科学计数法?

  9. 9

    如何提取行中的数字(包括科学计数法)

  10. 10

    如何在R中阅读大量的csv(可能是科学计数法)?

  11. 11

    PySpark-如何在csv输出中删除科学计数法

  12. 12

    如何在nodejs / html中删除科学计数法并仅以十进制显示?

  13. 13

    导出到Excel文件时,如何在熊猫DF中取消科学计数法?

  14. 14

    如何在Linux或Perl中的特定列中将科学计数法更改为数字

  15. 15

    如何在C中显示没有科学计数法的大双数?

  16. 16

    如何防止数字以科学计数法出现

  17. 17

    如何避免双重使用科学计数法?

  18. 18

    如何从双重删除科学计数法

  19. 19

    如何在js中使用科学计数法?

  20. 20

    如何在Matplotilb条形图中打开科学计数法?

  21. 21

    如何强制numpy数组中的数据类型脱离科学计数法

  22. 22

    如何用科学计数法格式化数字以在Javascript中显示更少的数字?

  23. 23

    R:禁用科学计数法

  24. 24

    在python json.dumps输出中禁用科学计数法

  25. 25

    (PHP)如何避免科学计数法并显示实际的大数?

  26. 26

    如何避免科学计数法而显示完整数字?

  27. 27

    如何关闭numpy中一列的科学计数法?

  28. 28

    如何绑定数字并防止科学计数法?

  29. 29

    (PHP)如何避免科学计数法并显示实际的大数?

热门标签

归档