[HADOOP] udf에서 hdfs 파일에 액세스
HADOOPudf에서 hdfs 파일에 액세스
내 udf 통화에서 파일에 액세스하고 싶습니다. 이것은 내 스크립트입니다 :
files = LOAD '$docs_in' USING PigStorage(';') AS (id, stopwords, id2, file);
buzz = FOREACH files GENERATE pigbuzz.Buzz(file, id) as file:bag{(year:chararray, word:chararray, count:long)};
항아리가 등록되었습니다. 경로는 파일이 실제로 존재하는 내 hdfs에 상대적입니다. 전화가 걸립니다. 그러나 파일이 발견되지 않은 것 같습니다. 어쩌면 내가 hdfs에서 파일에 액세스하려하기 때문일 수도 있습니다.
내 UDF Java 호출에서 hdfs의 파일에 어떻게 액세스 할 수 있습니까?
해결법
-
==============================
1.EvalFunc 안에서 HDFS에서 파일을 얻을 수 있습니다 :
EvalFunc 안에서 HDFS에서 파일을 얻을 수 있습니다 :
FileSystem fs = FileSystem.get(UDFContext.getUDFContext().getJobConf()); in = fs.open(new Path(fileName)); BufferedReader br = new BufferedReader(new InputStreamReader(in)); ....
또한 파일을 분산 캐시에 저장하는 것을 고려해 볼 수 있습니다.이 경우 EvalFunc 클래스에서 getCacheFiles ()를 재정의해야합니다.
Eq :
@Override public List<String> getCacheFiles() { List<String> list = new ArrayList<String>(2); list.add("/cache/pig/wordlist1.txt#w1"); list.add("/cache/pig/wordlist2.txt#w2"); return list; }
파일을 가져 오려면 파일의 심볼릭 링크 (w1과 w2)를 전달하면됩니다. 각 작업 노드의 로컬 파일 시스템
BufferedReader br = new BufferedReader(new FileReader(fileName));
from https://stackoverflow.com/questions/17514022/access-hdfs-file-from-udf by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop이 웹 인터페이스에 표시하는 모든 직업 추적기 및 작업 추적기 정보를 프로그래밍 방식으로 어떻게 얻을 수 있습니까? (0) | 2019.07.14 |
---|---|
[HADOOP] Hadoop MapReduce를 이용한 전산 언어학 프로젝트 아이디어 (0) | 2019.07.14 |
[HADOOP] Flume - Flume에서 전체 파일을 이벤트로 간주 할 수 있습니까? (0) | 2019.07.14 |
[HADOOP] 임팔라가 그것을 읽을 수 있도록 스파크 스트리밍의 출력물을 만드는 방법? (0) | 2019.07.14 |
[HADOOP] Hadoop 수정 방법 경고 : Ubuntu에서 잘못된 반사 액세스 작업이 발생했습니다. (0) | 2019.07.14 |