2016-09-02 4 views
1

Java 프로그램을 통해 하이브에 데이터를로드하려고합니다. 내 컴퓨터에서 파일을로드하고 있습니다.데이터로드 Windows에서 파일 경로를 사용하여 하이브 쿼리

stmt.executeQuery("load data local inpath 'file:///C:/sample/Documents/sample1.txt' into table " + tablename); 

내가 데이터는 하이브에 올바르게로드

stmt.executeQuery("load data local inpath '/home/sample/sample1.txt' into table " + tablename); 

우분투 컴퓨터에서 프로그램을 실행할 때 나는 그러나 다음과 같은 예외

Caused by: java.lang.RuntimeException: java.net.URISyntaxException:Expected scheme-specific part at index 2: C: 
    at java.net.URI$Parser.fail(URI.java:2829) 
    at java.net.URI$Parser.failExpecting(URI.java:2835) 
    at java.net.URI$Parser.parse(URI.java:3038) 
    at java.net.URI.<init>(URI.java:753) 

무엇입니까이 프로그램을 실행하면 데이터 베이스.

Windows에서 프로그램을 실행할 때 예외가 발생합니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

데이터를 로컬에서 Hadoop으로 보내야합니다. 'hadoop fs -put'의 Java API equi를 검색하면 Hadoop에 데이터가로드되면 데이터를 쉽게로드 할 수 있습니다. – abhiieor

+0

HDFS에서 @abhiieor 나중에 내가 파일에 액세스 할 수 있습니다. 의심의 여지 내가 우분투 컴퓨터에서 프로그램을 실행할 때 그것은 내가 위에서 언급 한 예외를 보여주는 파일 경로를 변경하여 Windows에서 시도 할 때 작동합니다. –

답변

0

Windows의 경로 (Uri) 구문이 우분투와 다릅니다. 우분투에서 우리는 슬래시를 사용합니다. 윈도우에서는 백 슬래시를 사용합니다.

윈도우 : C : \ 사용자 \ 시스템 \ 바탕 화면 \ DB를

리눅스 : /home/sample/sample1.txt '

는 그래서 URI의 구문을 변경해보십시오.

+0

경로를 변경하면 다음 예외가 발생합니다. 원인 : java.lang.RuntimeException : java.net.URISyntaxException : 절대 경로의 상대 경로 –

+0

로컬 키워드와 file : //을 사용하고 있다고 생각합니다. 이것을 시도하십시오 : 로컬 데이터 경로 인 'C : \ sample \ Documents \ sample1.txt'를로드하십시오. 로컬 키워드를 사용할 때 파일 시스템을 언급 할 필요가 없습니다. –

+0

내가 'C : \ sample \ Documents \ sample1.txt'와 같은 경로를 제공하면 잘못된 이스케이프 시퀀스와 같은 오류가 발생합니다. 'C : \\ sample \\ Documents \\ sample1.txt' 동일한 예외 및 또한 경로에서 file : // 제거했습니다. –

관련 문제