当前位置: 首页 > 知识库问答 >
问题:

读取CSV文件的火花-列值以数字开始,以D/F结束

孔琪
2023-03-14

我使用spark读取一个CSV文件,CSV中的一个字段值是91520122094491671D
读取后的值是9.152012209449166...
我发现如果一个字符串以数字开头,以D/F结尾,结果就是这样。
但是我需要将数据作为字符串读取。
那么该怎么办?

tax_file_code|  cus_name|   tax_identification_number

T19915201|  息烽家吉装饰材料店|  91520122094491671D

Scala代码如下所示:

sparkSession.read.format("com.databricks.spark.csv")
  .option("header", "true") 
  .option("inferSchema", true.toString) 
  .load(getHadoopUri(uri)) 
  .createOrReplaceTempView("t_datacent_cus_temp_guizhou_ds_tmp")

sparkSession.sql(
  s"""
     |  select  cast(tax_file_code as String) as tax_file_code,
     |          cus_name,
     |          cast(tax_identification_number as String) as tax_identification_number
     |  from    t_datacent_cus_temp_guizhou_ds_tmp
  """.stripMargin).createOrReplaceTempView("t_datacent_cus_temp_guizhou_ds")

sparkSession.sql("select * from t_datacent_cus_temp_guizhou_ds").show

结果如下所示。

+-----------------+-----------------+-------------------------+

|tax_file_code    | cus_name        |tax_identification_number|

+-----------------+-----------------+-------------------------+

|    T19915201    |息烽家吉装饰材料店 |     9.152012209449166...|

+-----------------+-----------------+-------------------------+

共有1个答案

范安歌
2023-03-14

听起来像是尾随的D/F将模式解释器设置为double或floats,列被截断,所以您看到的是指数值

如果希望所有列都是字符串,请移除

option("inferSchema", true.toString) 
 类似资料:
  • 问题内容: 我需要阅读一个CSV文件,其中包含带有逗号的字段,因此我将包含逗号的字段加了双引号,例如: 但是,当我尝试在Python中读取文件时,得到的字段由逗号分隔,如下所示: 我正在读取具有以下代码的CSV文件: 是否可以读取包含逗号的双引号字段? 问题答案: Python模块实际上确实支持带引号的字段,即使默认情况下也是如此。您的问题在于,默认情况下,Python不会跳过空格,因此您需要使用

  • 我想从多列csv文件中读取特定列,并使用Java在其他csv文件中打印这些列。需要帮忙吗?下面是我逐行打印每个令牌的代码。。但我希望只打印多列csv中的几列。

  • 然后我跑: 然后我得到: IllegalArgumentException:需求失败:列数不匹配。旧列名(1):值新列名(5):startIP,endIP,City,Longitude,Latitude at scala.predef$.require(predef.scala:224)at org.apache.spark.sql.dataset.todf(dataset.scala:376)a

  • 我使用以下方法将csv文件读入Spark: df=spark.read.format(file_type).options(header='true',quote='\"',ignoreleadingwhitespace='true',inferschema='true').load(file_location) 这是正常行为还是读错了? 更新:我将标记问题作为回答,因为下面的提示是有用的。然而,

  • 我得到了他们每个人的错误: 警告:fopen(../top.txt)[function.fopen]:无法打开流:没有这样的文件或目录 警告:文件大小()[function.filesize]:统计失败…/top.txt 警告:fread():提供的参数不是有效的流资源 警告:fclose():提供的参数不是有效的流资源 所有文件和文件夹中的CHMOD,设置为777 服务器上存在所有文件 PHP5

  • 我尝试使用pyspark读取csv文件,并使用以下pyspark代码: 但是我得到了这个错误: 在collect(self)532中使用SCCallSiteSync(self._sc)作为CSS:533 sock_info=self._jdf.collectTopython()-->534返回列表(_load_from_socket(sock_info,BatchedSerializer()))5