2016-09-13 1 views
4

hadoop 클러스터간에 하이브 테이블을 전송하는 작업이 있습니다. 내가 한 것은 소스 hadoop 클러스터에서 orc 파일을 다운로드 한 후 다음 명령을 사용하여 orc 파일을 대상 hdfs 클러스터에 업로드하는 것입니다.스키마를 지정하지 않고 orc 파일에서 하이브 테이블을 만듭니다.

hadoop fs -get 
hadoop fs -put 

대상 하둡 clustr에서 오크 파일 스파크 애플리케이션에서 다음과 같은 방법에 의해 판독 될 수

df = sqlContext.sql('select * from orc.`path_to_where_orc_file_is`') 

하지만, 대상 하둡 클러스터 하이브 내에 대응표 없다.

ddl 또는 스키마를 지정하지 않고 hdfs의 orc 파일에서 하이브에 테이블을 만드는 방법이 있습니까? 오크 파일 자체에는 스키마 정보가 포함되어 있기 때문에

원래 하이브 테이블의 스키마가 상당히 중첩되어 많은 필드가 있기 때문에이 질문을하는 이유가 있습니다.

현재 내가 생각할 수있는 유일한 해결책은 스파크에 그 오크 파일을 읽고, 다음과 같이 saveAsTable 옵션을 쓰는되어

dfTable.write.format("orc").mode(SaveMode.Overwrite).saveAsTable("db1.test1") 

답변

0
val table= spark.read.orc("hdfspath") 
table.printSchema 

표가 dataframe이며에 스키마를 가지고 그것.

관련 문제