无法将字母从物理顺序文件复制到 KSDS 集群
Posted
技术标签:
【中文标题】无法将字母从物理顺序文件复制到 KSDS 集群【英文标题】:Not able to copy alphabet letters from physical sequential file to a KSDS cluster 【发布时间】:2014-10-10 03:26:04 【问题描述】:我创建了一个包含一些记录的顺序文件。我必须将它们复制到 KSDS 集群。所以我为它写了一个JCL。 当我在我的顺序文件中给出数字时,它正在工作,但是当我给出英文字母时,它不起作用。
为什么会这样??
这是我创建 KSDS 集群的代码 //TRC186H JOB (TRC,TRC,TRC186,D2,DT99X),CLASS=A,
// MSGLEVEL=(1,1),MSGCLASS=C,NOTIFY=&SYSUID
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER -
(NAME(TRC186.VSAM.CASE.CLUSTER) -
TRACKS(2,2) -
CONTROLINTERVALSIZE(4096) -
INDEXED -
KEYS(6,1) -
FREESPACE(10,10)) -
DATA -
(NAME(TRC186.CASE.DATA) -
RECORDSIZE(180 180)) -
INDEX -
(NAME(TRC186.CASE.INDEX) -
CONTROLINTERVALSIZE(4096))
/*
这是我从顺序文件复制到 KSDS 集群的代码
//TRC186A JOB (TRG),CLASS=A,MSGLEVEL=(1,1),MSGCLASS=A,
// NOTIFY=&SYSUID
//STEP1 EXEC PGM=IDCAMS
//INPUTDD DD DSN=TRC186.VSAM.INPUTPS,DISP=OLD
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
REPRO -
INFILE(INPUTDD) -
OUTDATASET(TRC186.VSAM.CASE.CLUSTER)
/*
我给出的输入是 123456 234567 345678 456789 567891
它们很容易被复制,但是当我给出英文字母时- abcdefg cdhert kjsdfg qwerty kjhgfd 这不会被复制到集群。 请解释为什么?
【问题讨论】:
可能还有其他问题。我们需要看到的是粘贴到您从 IDCAMS 步骤中获得的“sysout”输出的问题中。我应该早点问的:-) 【参考方案1】:您在 KSDS 定义中的 KEYS
指定 6,1。您将需要检查这是否是您想要的。
当使用REPRO
加载KSDS
时,数据必须已经在键序列中。您显示的数字数据是按键顺序巧合的,字母数据不是。
如果您在 IDCAMS
步骤之前加上 SORT
步骤,那么您应该是干净的。但是,查看VSAM
想要密钥的方式,并与SORT
想要密钥的方式进行比较。就是这样。
IDCAMS
DEFINE
上的 KSDS
的 KEY 定义具有特定的格式。首先,您指定正确执行的长度,然后指定偏移量。偏移量的意思是“从记录起点开始的字节数”。因此,偏移量零是字节一(或第一列),偏移量一(您指定)是记录的字节二,这意味着您的数字示例仍然按顺序排列(有点侥幸)但您的字母不是,他们需要在 second 字母上与您使用的特定 DEFINE
保持一致。
【讨论】:
对不起,我在第一行多出了一个“g”。我在那里正确地写了它,是的,我想要 6,1。我没有编写任何排序代码,但它仍然只以排序方式工作。 只有当您为 REPRO 提供给 KSDS 的数据按顺序提供时,它才会起作用。如果您手动(如您的数字示例)或使用 SORT 步骤执行此操作并不重要。你的数字数据是有序的,你的字母数据不是。如果您愿意,您可以手动重新排列您的字母数据,但在它有序之前它不会起作用。您能用语言解释一下您认为 6,1 在 KSDS 的 DEFINE 中的含义吗? 对不起。我不明白如何按顺序给出英文字母。通过 (6,1) 它指定 1 是偏移量,6 是 u 给出的键值的长度。这意味着我从第 1 列开始,到第 6 列结束。至少,我是这么认为的。 abcdefghijklmnopqrstuvwxyz。好的,钥匙和我想的一样。偏移量零从第 1 列开始。偏移量 1 从第 2 列开始。 我给出了像 abcdef ghijkl mnopqr stuvwx 这样的输出。它不工作。以上是关于无法将字母从物理顺序文件复制到 KSDS 集群的主要内容,如果未能解决你的问题,请参考以下文章
可以将 hdfs 文件从 hadoop 集群 KERBEROS 复制到其他集群而不是 KERBEROS 吗?
使用 S3DistCp 将文件从 HDFS 复制到 EMR 集群上的 S3