2017-09-22 3 views
-1

내 스파크 스트리밍 작업은 압축 된 XML 파일의 압축을 풀고이를 마루 파일에 문자열로 추가합니다. 일괄 작업은 쪽모이 세공 파일을 읽습니다. 이 파일에는 압축 해제 된 XML 문자열이 하나만 포함되어 있습니다.쪽모 세공 열에서 XML 문자열을 추출하는 방법

마루 파일 스키마 :

DF.printSchema() 

루트
| - 압축 해제 : 문자열 (= null 허용 TRUE) 마루 파일

샘플 기록은

DF.show(1,False) 

|decompress               
------------------------------------------------+ 
|<Sale><ItemID >10</ItemID>......</Sale> 

인가 거기에 데이터 벽돌을 적용 할 수있는 방법은 XML XML 엘리먼트를 추출하기위한 패키지. UDF 작성 이외의 다른 옵션이 있습니까? 나는 UDF를 처리하는 데 더 많은 시간이 필요하다는 점을 고려하여 UDF를 두 번째 옵션으로 유지하고 있습니다.

답변

1

spark-xml 패키지는 RDD/DF가 아닌 파일에만 적용 할 수 있습니다. 유일한 옵션은 DF.write.text()을 사용하여 임시 경로 아래에 DF를 텍스트 파일로 저장하고 새로 저장된 파일을 읽는 것입니다.

하지만 여기에 질문이 생깁니다. 왜 XML을 스파크 스트리밍 작업에서 한 열짜리 마루 파일로 저장합니까? 왜 spark-xml 패키지로 읽을 수있는 텍스트 파일을 계획하지 않습니까?

+0

감사합니다. 마리우스. 스트리밍 작업은 실시간보고 용도로 압축 된 XML에서 특정 열을 추출해야합니다. 내 배치 작업은 다운 스트림 시스템에 대한 데이터를 준비해야합니다. 내 배치 작업은 하루에 한 번 실행됩니다. 스트리밍 작업에서 XML 파일의 압축을 풀고보고를 위해 필요한 열을 추출하고 일괄 처리를위한 데이터를 준비하려고합니다 (일괄 작업에는 전체 XML 콘텐츠가 필요함). 일괄 처리의 경우 수천 개의 아주 작은 파일을 갖고 싶지 않습니다. 각 스트림을 별도의 파일에 저장하는 대신 파일에 추가하려고합니다. –

+0

AFAIK, (스트리밍 작업에서) 쪽모 데이크 세트에 추가하더라도 작은 파일이 디렉토리에 생성됩니다. 스파크에서는 쪽모료 파일에 쉽게 추가 할 수 없습니다. [SPARK-18199] (https://issues.apache.org/jira/browse/SPARK-18199)를 참조하십시오. 작성 방법을 원시 텍스트 파일로 변경하면 일괄 작업에서 직접 작성 방법을 읽을 수 있습니다. – Mariusz

관련 문제