• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    미해결

예약 및 workflow 실행 불가 관련

22.08.28 19:35 작성 조회수 202

0

안녕하세요 선생님!

오랜만에 질문글 드립니다

Subject3 의 hive-script 작성 + 워크 플로우 생성 후

예약 실행 시 오류가 납니다

워크플로우만 따로 실행하려고 해도 동일한 에러가 납니다

xml 을 파싱하면서 나는 에러인 거 같은데요...

(앞의 강의와 과제는 잘 실행이 됐었습니다!)

확인해주시면 감사드리겠습니다ㅠㅠ

Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 21; An invalid XML character (Unicode: 0x8) was found in the value of attribute "name" and element is "workflow-app".
	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
	at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
	at org.apache.xerces.impl.XMLScanner.scanAttributeValue(Unknown Source)
	at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanAttribute(Unknown Source)
	at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
	at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.jaxp.validation.StreamValidatorHelper.validate(Unknown Source)
	at org.apache.xerces.jaxp.validation.ValidatorImpl.validate(Unknown Source)
	at javax.xml.validation.Validator.validate(Validator.java:124)
	at org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateAndParse(LiteWorkflowAppParser.java:176)
	... 24 more
2022-08-28 19:24:49,493 ERROR org.apache.oozie.command.coord.CoordActionStartXCommand: SERVER[server02.hadoop.com] USER[admin] GROUP[-] TOKEN[] APP[Subject3 - 예약] JOB[0000003-220828190147543-oozie-oozi-C] ACTION[0000003-220828190147543-oozie-oozi-C@8] Failing the action 0000003-220828190147543-oozie-oozi-C@8. Because E0701 : E0701: XML schema error, An invalid XML character (Unicode: 0x8) was found in the value of attribute "name" and element is "workflow-app".

답변 5

·

답변을 작성해보세요.

0

chul kim님의 프로필

chul kim

질문자

2022.09.04

안녕하세요 선생님!

어찌저찌 해서 문제는 해결 되었습니다

보내주신 workflow 로 교체를 해도 이전 내용으로 원복되는 현상이 있었어요

그래서 생성했던 workflow 와 예약을 제거하고 재생성해서 해결을 했습니다....

어리둥절 하네요

문제 해결에 고민 같이 해주셔서 감사드립니다

남은 주말 즐겁게 보내세요!!

네~ 다행 입니다! ^^

파일럿 플젝 끝까지 화이팅 입니다.

-김강원 드림

0

chul kim님의 프로필

chul kim

질문자

2022.08.31

선생님 안녕하세요!

workflow-app 태그에 name 속성에 특수문자가 있는 것은

요 에디터로 붙여넣기 하면서 생긴 것 같습니다

실제 파일에는 특수문자가 없습니다..ㅠㅠ

그래도 혹시나 싶어서 xml 파일의 name 속성의 값을 완전히 지우고 다시 입력한 뒤에

실행읋 해보았지만 동일한 에러가 나타나네요...ㅠㅠ

다른 방법이 있을까요...??

좋은하루 보내세요~!

감사합니다.

넵! "chul kim"님 혹시 메일주소좀 남겨 주세요~

정상 작동하는 workflow.xml 과, hive-xxx.sql 파일을 보내 드리겠습니다.

해당 워크플로우의 작업영역에서 기존 workflow.xml 과, hive-xxx.sql 파일을 삭제 하시고요..

메일로 드립 파일로 교체후 테스트해 봐 주세요~ - 빅디 드림

chul kim님의 프로필

chul kim

질문자

2022.08.31

ㅠㅠ...

메일주소는 chkim100617@gmail.com 입니다!

감사합니다

0

chul kim님의 프로필

chul kim

질문자

2022.08.29

안녕하세요 선생님!

말씀해주신 내용들 보내드립니다

다만 .sql 파일이 2개가 아닌 3개가 생성되어 있어서.. 일단은 다 보내드립니다!

(workflow.xml 을 보면 2개만 사용하는 거 같긴 하지만 혹시 몰라서요ㅎㅎ)

좋은 밤 되세요!

workflow.xml

<workflow-app name="Subject3 - Workflow" xmlns="uri:oozie:workflow:0.5">
    <start to="hive-a283"/>
    <kill name="Kill">
        <message>작업 실패, 오류 메시지[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <action name="hive-a283" cred="hive2">
        <hive2 xmlns="uri:oozie:hive2-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <jdbc-url>jdbc:hive2://server02.hadoop.com:10000/default</jdbc-url>
            <script>${wf:appPath()}/hive-a283.sql</script>
        </hive2>
        <ok to="hive-340f"/>
        <error to="Kill"/>
    </action>
    <action name="hive-340f" cred="hive2">
        <hive2 xmlns="uri:oozie:hive2-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <jdbc-url>jdbc:hive2://server02.hadoop.com:10000/default</jdbc-url>
            <script>${wf:appPath()}/hive-340f.sql</script>
              <param>working_day=20200322</param>
        </hive2>
        <ok to="End"/>
        <error to="Kill"/>
    </action>
    <end name="End"/>
</workflow-app>

hive-207f.sql

USE default;

insert into table Managed_SmartCar_Symptom_Info
select
    t1.car_number,
    t1.speed_p_avg_by_carnum,
    case
        when (abs((t1.speed_p_avg_by_carnum - t3.speed_p_avg) / t4.speed_p_std)) > 2
            then 'abnormal'
        else 'normal'
    end
    as speed_p_symptom_score,
    t1.break_p_avg_by_carnum,
    case
        when (abs((t1.break_p_avg_by_carnum - t3.break_p_avg) / t4.break_p_std)) > 2
            then 'abnormal'
        else 'normal'
    end
    as break_p_symptom_score,
    t2.steer_a_count,
    case
        when (t2.steer_a_count) > 2000
            then 'abnormal'
        else 'normal'
    end
    as steer_p_symptom_score,
    t1.biz_date
from 
    (select car_number,
            biz_date,
            avg(speed_pedal) as speed_p_avg_by_carnum,
            avg(break_pedal) as break_p_avg_by_carnum
    from managed_smartcar_drive_info
    where biz_date = '${working_day}'
    group by car_number, biz_date) t1
join
    (select car_number,
            count(*) as steer_a_count
    from managed_smartcar_drive_info
    where steer_angle in ('L2', 'L3', 'R2', 'R3') and
            biz_date = '${working_day}'
    group by car_number) t2
on
    t1.car_number = t2.car_number,
    (select avg(speed_pedal) as speed_p_avg,
            avg(break_pedal) as break_p_avg
    from managed_smartcar_drive_info) t3,
    (select stddev_pop(s.speed_p_avg_by_carnum) as speed_p_std,
            stddev_pop(s.break_p_avg_by_carnum) as break_p_std
    from (select car_number,
                 avg(speed_pedal) as speed_p_avg_by_carnum,
                 avg(break_pedal) as break_p_avg_by_carnum
         from managed_smartcar_drive_info
         group by car_number) s) t4

hive-340f.sql

USE default;

insert into table Managed_SmartCar_Symptom_Info
select
    t1.car_number,
    t1.speed_p_avg_by_carnum,
    case
        when (abs((t1.speed_p_avg_by_carnum - t3.speed_p_avg) / t4.speed_p_std)) > 2
            then 'abnormal'
        else 'normal'
    end
    as speed_p_symptom_score,
    t1.break_p_avg_by_carnum,
    case
        when (abs((t1.break_p_avg_by_carnum - t3.break_p_avg) / t4.break_p_std)) > 2
            then 'abnormal'
        else 'normal'
    end
    as break_p_symptom_score,
    t2.steer_a_count,
    case
        when (t2.steer_a_count) > 2000
            then 'abnormal'
        else 'normal'
    end
    as steer_p_symptom_score,
    t1.biz_date
from 
    (select car_number,
            biz_date,
            avg(speed_pedal) as speed_p_avg_by_carnum,
            avg(break_pedal) as break_p_avg_by_carnum
    from managed_smartcar_drive_info
    where biz_date = '${working_day}'
    group by car_number, biz_date) t1
join
    (select car_number,
            count(*) as steer_a_count
    from managed_smartcar_drive_info
    where steer_angle in ('L2', 'L3', 'R2', 'R3') and
            biz_date = '${working_day}'
    group by car_number) t2
on
    t1.car_number = t2.car_number,
    (select avg(speed_pedal) as speed_p_avg,
            avg(break_pedal) as break_p_avg
    from managed_smartcar_drive_info) t3,
    (select stddev_pop(s.speed_p_avg_by_carnum) as speed_p_std,
            stddev_pop(s.break_p_avg_by_carnum) as break_p_std
    from (select car_number,
                 avg(speed_pedal) as speed_p_avg_by_carnum,
                 avg(break_pedal) as break_p_avg_by_carnum
         from managed_smartcar_drive_info
         group by car_number) s) t4;

hive-a283.sql

USE default;

create table if not exists Managed_SmartCar_Symptom_Info (
    car_number string,
    speed_p_avg string,
    speed_p_symptom string,
    break_p_avg string,
    break_p_symptom string,
    steer_a_cnt string,
    steer_p_symptom string,
    biz_date string
)
row format delimited
fields terminated by ','
stored as textfile;


넵! 확인 했습니다.

hive-xxx.sql 파일은 2개만 있어야 정상이고요..

hive-207f.sql 파일은 삭제 하셔도 될 것 같습니다.

workflow.xml에서 보시면..Subject3 앞에 들어간 특수문자가 문제로 보입니다.

요걸 제거해 보시고 실행해봐 주세요~ -빅디 드림

<workflow-app name="Subject3 - Workflow" xmlns="uri:oozie:workflow:0.5">

0

chul kim님의 프로필

chul kim

질문자

2022.08.29

안녕하세요 선생님!

요청해주신 워크플로우 스샷을 캡쳐해서 보내드립니다!

좋은 하루 보내세요!

감사합니다

네~ 보내주신 워크플로 이미지상에서는 잘만들어 진것으로 보입니다. ^^*

워크플로우의 상세 정보를 확인해 봐야할 것 같은데요..

Subject 3 - Workflow에서 > 우측 상단의 "..." 버튼을 누르시면 "작업영역" 메뉴가 보입니다.

작업영역에서 > 3개의 파일(hive-xxxx.sql, hive-xxx.sql, workflow.xml)의 내용좀 부탁드립니다.

ps. 의심스러운건 주제영역3에 2개의 hive쿼리를 에디터에서 열고, 복붙하면서 인코딩 문제가 발생한 것 같습니다.

-빅디 드림

chul kim님의 프로필

chul kim

질문자

2022.08.30

저는 복붙을 하지 않고 수업자료에 있는 쿼리를 직접 타이핑했습니다

혹시 workflow-app name 에 이상한 특수 문자가 있어서 그런걸까요...??

hue 상에서는 보이지 않아요..

"chul kim"님!!

직접 Hive SQL을 모두 작성해 보시다니...파일럿 프로젝트를 찐으로 진행하고 계시네요!! ^^

아래 답글을 달았는데요!!! 저도 name에 붙은 특수문자가 문제인것 같습니다.

-빅디 드림

0

안녕하세요! "chul kim"님!

올려주신 내용만으로 문제의 원인 파악이 어려워 보입니다. ^^;;;

혹시 작성하신 주제영역3의 워크플로우를 캡쳐해서 올려 주실 수 있는지요?! - 빅디 드림