2017-10-26 14 views
1

hadoop 클러스터 (BigInsight 4.1 배포본)에서 spark (1.5.1 버전) 작업의 출력으로 하이브 테이블을 생성하려고하는데 권한 문제가 있습니다. 내 생각 엔 spark는 테이블을 만들기 위해 기본 사용자 (이 경우 '원사'및 작업 제출자의 사용자 이름이 아님)를 사용하므로 그렇게하지 못합니다.스파크 작업을 통해 하이브 테이블 만들기

하이브 테이블을 만들 수있는 권한이있는 인증 된 사용자를 설정하기 위해 hive-site.xml 파일을 사용자 지정하려고했지만 작동하지 않았습니다.

또한 Hadoop 사용자 변수를 인증 된 사용자로 설정하려고 시도했지만 작동하지 않았습니다.

txt 파일을 저장하지 않고 하이브 테이블을 만들어 성능을 최적화하고 orc 압축을 통해 출력 크기를 줄이고 싶습니다.

내 질문은 :

  • 지정된 사용자와 스파크 dataframe API를 의 쓰기 함수를 호출 할 수있는 방법이 있습니까?
  • oozie의 워크 플로 파일을 사용하여 사용자 이름을 선택할 수 있습니까?
  • 대체 아이디어가 있거나이 문제에 직면 한 사람이 있습니까?

감사합니다. 하탁! 스칼라에서

df.write().mode(SaveMode.Append).saveAsTable("tableName"); 

추가,

df.write().saveAsTable("tableName"); 

당신은 덮어 쓰기 같은 다른 SaveMode를 사용할 수 있습니다 :

+0

예, oozie를 사용하면 사용자 이름을 설정할 수 있지만 하이브 사이트는 사용자 가장을 지원하도록 설정해야합니다. –

+0

고마워. 귀하의 대답을 바탕으로 hive-site.xml에서 "hive.server2.enable.doAs"속성을 true로 설정해야한다는 것을 발견했습니다. 그러나 이것은 내 Java 클래스 패스에 포함 된 xml이 아니라 클러스터에있는 xml에서 수행되어야한다고 생각합니다. – Hatak

+0

내가 아는 한 두 곳에서 모두 설정해야합니다. 하나는 서버에 사용자 정보를 디스크에 전달하라고 지시합니다. 다른 하나는 클라이언트에게 그것을 서버에 전달할 것을 지시합니다. 그런데 기본값은 true입니다. –

답변

0

, 당신은 자바에서

쓸 수있는 데이터를 보유 df을 고려

df.write.mode(SaveMode.Append).saveAsTable(tableName) 

저장하려는 유형에 따라 다른 많은 옵션을 지정할 수 있습니다. Txt, ORC (버킷 포함), JSON.

+0

답장을 보내 주셔서 감사합니다. 데이터 프레임을 하이브 테이블로 저장하는 방법을 이미 알고 있지만 내 문제는 권한과 관련이 있습니다. 내 직업은 하이브 메타 스토어에 글을 쓸 권한이 없으며 그 해결책을 찾기 위해 노력하고 있습니다. – Hatak