Lookup Partition Warning

Post questions here relative to DataStage Enterprise/PX Edition for such areas as Parallel job design, Parallel datasets, BuildOps, Wrappers, etc.

Moderators: chulett, rschirm, roy

Post Reply
muralisankarr
Premium Member
Premium Member
Posts: 83
Joined: Tue Oct 28, 2008 1:55 am
Location: Chennai

Lookup Partition Warning

Post by muralisankarr »

Hi All,

I have searched the forum and did maximum possible thing from my understanding to solve the issue. But I couldn't. Please have a look.

We have the following warning message in the lookup stage

Code: Select all

ReferAttributes: When checking operator: Operator of type "APT_LUTProcessOp": will partition despite the
preserve-partitioning flag on the data set on input port 1.
After searching the over the warning message I have
1) Made the up stream stage to clear the preserve partition flag
2) Cleared the preserve partition flag of the stage
3) Tried to set up the down stream stage to propagate partition.

Nothing has helped to take them out. So I designed a simple job to read the data from two Oracle Enterprise stage and partition the data based on the same key

Code: Select all


Oracle______
                   |
                   |
                   |
              ----------
             |   LKP   |-------------- Dataset
             -----------
                   |
                   |
                   |
Oracle _____|

The Lookup stage is partitioning both the input data based on the same keys. The preserve partition is set to clear (in Oracle and Lookup Stage). But the same warning message exists (I haven't copied the stage in to pallet thinking the links at the lookup stage has some link attributes in memory)

Please find the Job Score

Code: Select all

main_program: This step has 7 datasets:
ds0: {op0[1p] (sequential C_DYN_PART_CONFIG)
      eOther(APT_HashPartitioner { key={ value=ASSMBL_CD, 
        subArgs={ cs }
      },
  key={ value=IPC_REF_CD, 
        subArgs={ cs }
      }
})<>eCollectAny
      op3[4p] (parallel buffer(0))}
ds1: {op1[1p] (sequential C_PART_CONFIG)
      eOther(APT_HashPartitioner { key={ value=ASSMBL_CD, 
        subArgs={ cs }
      },
  key={ value=IPC_REF_CD, 
        subArgs={ cs }
      }
})<>eCollectAny
      op2[4p] (parallel APT_LUTCreateOp in ReferAttributes)}
ds2: {op2[4p] (parallel APT_LUTCreateOp in ReferAttributes)
      [pp] eEntire#>eCollectAny
      op6[4p] (parallel APT_CombinedOperatorController:APT_LUTProcessOp in ReferAttributes)}
ds3: {op2[4p] (parallel APT_LUTCreateOp in ReferAttributes)
      [pp] eSame=>eCollectAny
      op6[4p] (parallel APT_CombinedOperatorController:APT_LUTProcessOp in ReferAttributes)}
ds4: {op3[4p] (parallel buffer(0))
      [pp] eSame=>eCollectAny
      op6[4p] (parallel APT_CombinedOperatorController:APT_LUTProcessOp in ReferAttributes)}
ds5: {op4[4p] (parallel delete data files in delete test33.ds)
      >>eCollectAny
      op5[1p] (sequential delete descriptor file in delete test33.ds)}
ds6: {op6[4p] (parallel APT_CombinedOperatorController:Data_Set_3)
      =>
      test33.ds}
It has 7 operators:
op0[1p] {(sequential C_DYN_PART_CONFIG)
    on nodes (
      node1[op0,p0]
    )}
op1[1p] {(sequential C_PART_CONFIG)
    on nodes (
      node2[op1,p0]
    )}
op2[4p] {(parallel APT_LUTCreateOp in ReferAttributes)
    on nodes (
      node1[op2,p0]
      node2[op2,p1]
      node3[op2,p2]
      node4[op2,p3]
    )}
op3[4p] {(parallel buffer(0))
    on nodes (
      node1[op3,p0]
      node2[op3,p1]
      node3[op3,p2]
      node4[op3,p3]
    )}
op4[4p] {(parallel delete data files in delete test33.ds)
    on nodes (
      node1[op4,p0]
      node2[op4,p1]
      node3[op4,p2]
      node4[op4,p3]
    )}
op5[1p] {(sequential delete descriptor file in delete test33.ds)
    on nodes (
      node1[op5,p0]
    )}
op6[4p] {(parallel APT_CombinedOperatorController:
      (APT_LUTProcessOp in ReferAttributes)
      (Data_Set_3)
    ) on nodes (
      node1[op6,p0]
      node2[op6,p1]
      node3[op6,p2]
      node4[op6,p3]
    )}
It runs 19 processes on 4 nodes.
and echo

Code: Select all

main_program: Echo:
oraread
-dboptions '{user=DM,password=******}'
-query 'SELECT ASSMBL_CD, IPC_REF_CD, PART_NO_OEM, MANUFACT_REF, PART_NO_SDESC, APPLICABILITY_DESC, INTERCHANGE_ORD, PART_BASELINE_CD FROM C_DYN_PART_CONFIG_SB_747'
-server 'MXIDM'
[ident('C_DYN_PART_CONFIG'); jobmon_ident('C_DYN_PART_CONFIG')]
0> [modify (
  ASSMBL_CD:nullable string[max=8]=ASSMBL_CD;
  IPC_REF_CD:nullable string[max=50]=IPC_REF_CD;
  PART_NO_OEM:nullable string[max=40]=PART_NO_OEM;
  MANUFACT_REF:nullable string[max=16]=MANUFACT_REF;
  PART_NO_SDESC:nullable string[max=80]=PART_NO_SDESC;
  APPLICABILITY_DESC:nullable string[max=4000]=APPLICABILITY_DESC;
  INTERCHANGE_ORD:nullable decimal[4,0]=INTERCHANGE_ORD;
  PART_BASELINE_CD:nullable string[max=80]=PART_BASELINE_CD;
keep
  ASSMBL_CD,IPC_REF_CD,PART_NO_OEM,MANUFACT_REF,
  PART_NO_SDESC,APPLICABILITY_DESC,INTERCHANGE_ORD,PART_BASELINE_CD;
)] 'C_DYN_PART_CONFIG:GetDynParts.v'
;
oraread
-dboptions '{user=DM,password=******}'
-query 'SELECT ASSMBL_CD, IPC_REF_CD, IPC_REF_NAME, ATA_CD, INV_CLASS_CD, ASSMBL_BOM_ZONE_CD, POS_CT, POS_NAME_LIST, NH_IPC_REF_CD, PART_GRP_APPLICABILITY, LRU_BOOL FROM C_PART_CONFIG_SB_747'
-server 'MXIDM'
[ident('C_PART_CONFIG'); jobmon_ident('C_PART_CONFIG')]
0> [modify (
  ASSMBL_CD:nullable string[max=8]=ASSMBL_CD;
  IPC_REF_CD:nullable string[max=50]=IPC_REF_CD;
  IPC_REF_NAME:nullable string[max=100]=IPC_REF_NAME;
  ATA_CD:nullable string[max=50]=ATA_CD;
  INV_CLASS_CD:nullable string[max=8]=INV_CLASS_CD;
  ASSMBL_BOM_ZONE_CD:nullable string[max=40]=ASSMBL_BOM_ZONE_CD;
  POS_CT:nullable decimal[10,0]=POS_CT;
  POS_NAME_LIST:nullable string[max=4000]=POS_NAME_LIST;
  NH_IPC_REF_CD:nullable string[max=50]=NH_IPC_REF_CD;
  PART_GRP_APPLICABILITY:nullable string[max=4000]=PART_GRP_APPLICABILITY;
  LRU_BOOL:nullable string[max=1]=LRU_BOOL;
keep
  ASSMBL_CD,IPC_REF_CD,IPC_REF_NAME,ATA_CD,
  INV_CLASS_CD,ASSMBL_BOM_ZONE_CD,POS_CT,POS_NAME_LIST,
  NH_IPC_REF_CD,PART_GRP_APPLICABILITY,LRU_BOOL;
)] 'C_PART_CONFIG:GetPartsData.v'
;
hash -key ASSMBL_CD -cs -key IPC_REF_CD -cs
[ident('ReferAttributes.GetDynParts_Part')]
0< [] 'C_DYN_PART_CONFIG:GetDynParts.v'
0> [] 'C_DYN_PART_CONFIG:GetDynParts_Part.v'
;
hash -key ASSMBL_CD -cs -key IPC_REF_CD -cs
[ident('ReferAttributes.GetPartsData_Part')]
0< [] 'C_PART_CONFIG:GetPartsData.v'
0> [] 'C_PART_CONFIG:GetPartsData_Part.v'
;
lookup
-table
-key ASSMBL_CD
-key IPC_REF_CD
-ifNotFound fail
[ident('ReferAttributes'); jobmon_ident('ReferAttributes')]
0< [] 'C_DYN_PART_CONFIG:GetDynParts_Part.v'
1< [] 'C_PART_CONFIG:GetPartsData_Part.v'
0> [-pp; modify (
keep
  ASSMBL_CD,IPC_REF_CD,IPC_REF_NAME,ATA_CD,
  INV_CLASS_CD,ASSMBL_BOM_ZONE_CD,POS_CT,POS_NAME_LIST,
  NH_IPC_REF_CD,PART_GRP_APPLICABILITY,LRU_BOOL,PART_NO_OEM,
  MANUFACT_REF,PART_NO_SDESC,APPLICABILITY_DESC,INTERCHANGE_ORD,
  PART_BASELINE_CD;)] 'ReferAttributes:SendDynParts.v'
;
same
[ident('Data_Set_3.SendDynParts_Part')]
0< [] 'ReferAttributes:SendDynParts.v'
0> [] 'ReferAttributes:SendDynParts_Part.v'
;
copy
[ident('Data_Set_3')]
0< [] 'ReferAttributes:SendDynParts_Part.v'
0>| [ds] 'test33.ds'
;


While reading the other posts I feel this shouldn't happen? Am I missing some thing? Please advise/help
The minute you start talking about what you're going to do if you lose, you have lost
ray.wurlod
Participant
Posts: 54607
Joined: Wed Oct 23, 2002 10:52 pm
Location: Sydney, Australia
Contact:

Post by ray.wurlod »

Setting Preserve Partitioning to Clear in the Oracle stages is the cause of this warning. Change it to Default.
IBM Software Services Group
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
muralisankarr
Premium Member
Premium Member
Posts: 83
Joined: Tue Oct 28, 2008 1:55 am
Location: Chennai

Post by muralisankarr »

ray.wurlod wrote:Setting Preserve Partitioning to Clear in the Oracle stages is the cause of this warning. Change it to Default.
Thanks for your input.

I have set them to default. But still the warning exists. Either we clear it or default it, the warning message exists. (I have double checked it. Compiled the job twice after each change). Please advise

Many Thanks
MSR
The minute you start talking about what you're going to do if you lose, you have lost
muralisankarr
Premium Member
Premium Member
Posts: 83
Joined: Tue Oct 28, 2008 1:55 am
Location: Chennai

Post by muralisankarr »

I have replace Oracle Enterprise stage to Oracle connector stage which don't have preserve partition flag. Even with it, the warning message exist. If it is surely not the correct behavior, I can raise it with IBM. I have access to IBM support. Please advise.

Many Thanks
MSR
The minute you start talking about what you're going to do if you lose, you have lost
kwwilliams
Participant
Posts: 437
Joined: Fri Oct 21, 2005 10:00 pm

Post by kwwilliams »

Your error states:


ReferAttributes: When checking operator: Operator of type "APT_LUTProcessOp": will partition despite the
preserve-partitioning flag on the data set on input port 1.

Your Oracle stage is sequential and you have the Preserve Partitioning set to Default which is Propogate. The lookup stage is running on four nodes and is partitioning your data despite the fact that you have the Oracle stage set to Propogagte the partitioning. Set the preserve partitioning to clear and the warning will go away.
muralisankarr
Premium Member
Premium Member
Posts: 83
Joined: Tue Oct 28, 2008 1:55 am
Location: Chennai

Post by muralisankarr »

kwwilliams wrote: Your Oracle stage is sequential and you have the Preserve Partitioning set to Default which is Propogate. The lookup stage is running on four nodes and is partitioning your data despite the fact that you have the Oracle stage set to Propogagte the partitioning. Set the preserve partitioning to clear and the warning will go away.
While I set the preserve partition flag to Default, set, clear, I have this warning message. I have a old dsbox on 7.5 which don't have this. It is only on this 8.1 box where we have this issue.
The minute you start talking about what you're going to do if you lose, you have lost
kwwilliams
Participant
Posts: 437
Joined: Fri Oct 21, 2005 10:00 pm

Post by kwwilliams »

Both of the Oracle stages have their preserve partitioning set to Clear?
muralisankarr
Premium Member
Premium Member
Posts: 83
Joined: Tue Oct 28, 2008 1:55 am
Location: Chennai

Post by muralisankarr »

kwwilliams wrote:Both of the Oracle stages have their preserve partitioning set to Clear?
Yes. Both of the stages has preserve partition set to clear and still the warning message exists!
The minute you start talking about what you're going to do if you lose, you have lost
dougcl
Premium Member
Premium Member
Posts: 137
Joined: Thu Jun 24, 2010 4:28 pm

Post by dougcl »

Apparently, and I may be wrong on this, BOTH the stream link and the reference link must have the partition flag cleared. That means going upstream on both links and clearing the partition flag there. This is true even if you aren't repartitioning ONE of the links. If either link is being repartitioned, BOTH links must have the flag cleared. Someone please tell me I am wrong.
Post Reply