Add leading zeros to Columns in a Spark Data Frame [duplicate]

梦想的初衷 提交于 2019-12-12 09:59:53

问题


In short, I'm leveraging spark-xml to do some parsing of XML files. However, using this is removing the leading zeros in all the values I'm interested in. However, I need the final output, which is a DataFrame, to include the leading zeros. I'm unsure/can not figure out a way to add leading zeros to the columns I'm interested in.

val df = spark.read
  .format("com.databricks.spark.xml")
  .option("rowTag", "output")
  .option("excludeAttribute", true)
  .option("allowNumericLeadingZeros", true) //including this does not solve the problem
  .load("pathToXmlFile")

Example output that I'm getting

+------+---+--------------------+
|iD    |val|Code                |
+------+---+--------------------+
|1     |44 |9022070536692784476 |
|2     |66 |-5138930048185086175|
|3     |25 |805582856291361761  |
|4     |17 |-9107885086776983000|
|5     |18 |1993794295881733178 |
|6     |31 |-2867434050463300064|
|7     |88 |-4692317993930338046|
|8     |44 |-4039776869915039812|
|9     |20 |-5786627276152563542|
|10    |12 |7614363703260494022 |
+------+---+--------------------+

Desired output

+--------+----+--------------------+
|iD      |val |Code                |
+--------+----+--------------------+
|001     |044 |9022070536692784476 |
|002     |066 |-5138930048185086175|
|003     |025 |805582856291361761  |
|004     |017 |-9107885086776983000|
|005     |018 |1993794295881733178 |
|006     |031 |-2867434050463300064|
|007     |088 |-4692317993930338046|
|008     |044 |-4039776869915039812|
|009     |020 |-5786627276152563542|
|0010    |012 |7614363703260494022 |
+--------+----+--------------------+

回答1:


You can simply do that by using concat inbuilt function

df.withColumn("iD", concat(lit("00"), col("iD")))
           .withColumn("val", concat(lit("0"), col("val")))



回答2:


This solved it for me, thank you all for the help

 val df2 = df
        .withColumn("idLong", format_string("%03d", $"iD"))


来源:https://stackoverflow.com/questions/50047444/add-leading-zeros-to-columns-in-a-spark-data-frame

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!