2017-10-30 5 views
1

내 dev envts 중 하나를 ML8에서 ML9로 마이그레이션하려고합니다. 성공적으로 ML8 버전에서 작동하는 가져 오기 스크립트가 있지만 ML9 데이터베이스에 대해 실행하려고하면 오류가 발생합니다. ML9 버전은 9.0.3.1입니다.Marklogic 9 : 변환을 사용하여 레코드를 가져올 때 MLCP가 실패합니다.

17/10/30 14:07:33 INFO contentpump.LocalJobRunner: Content type: JSON 
17/10/30 14:07:33 INFO contentpump.ContentPump: Job name: local_455168344_1 
17/10/30 14:07:33 INFO contentpump.FileAndDirectoryInputFormat: Total input paths to process : 1 
17/10/30 14:07:38 WARN contentpump.TransformWriter: Failed document /test/records/31.json 
17/10/30 14:07:38 WARN contentpump.TransformWriter: <error:format-string xmlns:error="http://marklogic.com/xdmp/error" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">XDMP-UNEXPECTED: (err:XPST0003) Unexpected token syntax error, unexpected QName_, expecting $end or SemiColon_</error:format-string> 
17/10/30 14:07:38 WARN contentpump.TransformWriter: Failed document /test/records/32.json 
17/10/30 14:07:38 WARN contentpump.TransformWriter: <error:format-string xmlns:error="http://marklogic.com/xdmp/error" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">XDMP-UNEXPECTED: (err:XPST0003) Unexpected token syntax error, unexpected QName_, expecting $end or SemiColon_</error:format-string> 
17/10/30 14:07:38 INFO contentpump.LocalJobRunner: completed 100% 
17/10/30 14:07:38 INFO contentpump.LocalJobRunner: com.marklogic.mapreduce.MarkLogicCounter: 
17/10/30 14:07:38 INFO contentpump.LocalJobRunner: INPUT_RECORDS: 2 
17/10/30 14:07:38 INFO contentpump.LocalJobRunner: OUTPUT_RECORDS: 2 
17/10/30 14:07:38 INFO contentpump.LocalJobRunner: OUTPUT_RECORDS_COMMITTED: 0 
17/10/30 14:07:38 INFO contentpump.LocalJobRunner: OUTPUT_RECORDS_FAILED: 2 
17/10/30 14:07:38 INFO contentpump.LocalJobRunner: Total execution time: 5 sec 

: 여기

import 
-host 
192.168.33.10 
-port 
8041 
-username 
admin 
-password 
admin 
-input_file_path 
d:\maroon\data\mbastest.csv 
-mode 
local 
-input_file_type 
delimited_text 
-uri_id 
ClientId 
-output_uri_prefix 
/test/records/ 
-output_uri_suffix 
.json 
-document_type 
json 
-transform_module 
/ingestion/transform.js 
-transform_function 
testTransform 
-transform_param 
test 
-content_encoding 
windows-1252 
-thread_count 
1 

테스트 CSV 파일 만 2 레코드 테스트 실행의 출력 따릅니다 : MLCP 버전은 다음과 같이 9.0.3

내 MLCP 옵션 파일입니다 변환 매개 변수를 제거하면 가져 오기가 정상적으로 작동합니다.

나는 내 변환 모듈 자체의 구문 분석 문제가 될 줄 알았는데, 그래서 문서에서 다음 예제로 교체 시도 :

// Add a property named "NEWPROP" to any JSON input document. 
// Otherwise, input passes through unchanged. 

function addProp(content, context) 
{ 
    const propVal = (context.transform_param == undefined) 
       ? "UNDEFINED" : context.transform_param; 

    if (xdmp.nodeKind(content.value) == 'document' && 
     content.value.documentFormat == 'JSON') { 
    // Convert input to mutable object and add new property 
    const newDoc = content.value.toObject(); 
    newDoc.NEWPROP = propVal; 

    // Convert result back into a document 
    content.value = xdmp.unquote(xdmp.quote(newDoc)); 
    } 
    return content; 
}; 

exports.addProp = addProp; 

(물론 나는 MLCP 옵션 파일에 PARAMS 변경 그에 따라)

이 테스트 기능으로도 문제가 지속됩니다.

어떤 조언이 필요합니까?

+0

동일한 버전을 실행 중이며 시스템에서 오류를받지 못했습니다. 예를 들어 addProp() 함수도 예상대로 작동합니다. – Tamas

답변

2

변환 모듈의 확장자가 .js이기 때문에이 문제가 발견되었습니다. .sjs로 변경하면 MLCP 가져 오기가 예상대로 진행됩니다.