当我从 COBOL 文件中读取十进制值时,它们变为 NULL

Decimal values come NULL when I read them from COBOL file

我正在尝试读取 COBOL 文件。我有定义如下的字帖:

10  P1  PIC X(02).
10  P2  PIC X(15).
10  P3  PIC X(01).
10  P4  PIC X(01).
10  P5  PIC X(01).
10  P6  PIC X(01).
10  P7  PIC X(01).
10  P8  PIC S9(06)V99.
10  P9  PIC S9(06)V99.
10  P10  PIC S9(06)V99.
10  P11  PIC S9(06)V99.
10  P12  PIC S9(06)V99.
10  P13  PIC S9(06)V99.
10  P14  PIC S9(06)V99.
10  P15  PIC S9(06)V99.
10  P16  PIC S9(06)V99.
10  P17  PIC S9(06)V99.
10  P18  PIC S9(06)V99.

p8p18 中的值包含带符号的十进制值,但是当我检查结果 table 时,它们显示为 NULL.

我尝试过的东西:

我将 S9(06)V99 更改为:

我也尝试将值更改为 String (PIC X(20)) 但仍然没有成功。

有什么帮助吗?

注意: 如您所见,我所有的尝试都是使用 COBOL 结构,也许我可以用我的SCALA 代码?

编辑 1

val df = ss.read.format("za.co.absa.cobrix.spark.cobol.source")
      .option("copybook", Util.getProperty("hdfs_dir") + "/" + Util.getProperty("copyBook"))
      .option("schema_retention_policy", "collapse_root")
      .load("s3a://my-S3-location/");

编辑 2

根据一位朋友的建议,我在 SparkSession 中添加了以下选项:

.option("floating_point_format", "IBM")

我也尝试了@mazaneicha 的建议:

.option("encoding", "ascii")

更多详情

程序能够读取正则小数(我有几列有正则小数),但是带符号的小数[=72]有问题=]

从文件中读取数据时,切勿在 cobol 中将变量声明为 numeric(9), 而不是将变量声明为字母数字 (X)。

为了进一步计算,使用 FUNCTION NUMVAL

将变量转换为数字

示例: 结果 = 函数数值 (P8).