从orc文件创建配置单元表而不指定模式

Hey*_*ang 5 hive orc

我有工作在hadoop集群之间传输hive表.我所做的是从源hadoop集群下载orc文件,然后使用以下命令将orc文件上载到目标hdfs集群.

hadoop fs -get 
hadoop fs -put
Run Code Online (Sandbox Code Playgroud)

目标hadoop clustr中的orc文件可以通过以下方式在spark应用程序中读取:

df = sqlContext.sql('select * from orc.`path_to_where_orc_file_is`') 
Run Code Online (Sandbox Code Playgroud)

但是,目标hadoop集群中的配置单元中没有相应的表.

有没有办法在hdfs中从orc文件创建表而不指定ddl或schema?由于orc文件本身包含架构信息.

我问这个问题的原因是因为原始hive表的模式是完全嵌套的并且有很多字段.

目前我能想到的唯一解决方案是在spark中读取那些orc文件,并使用saveAsTable选项将它们写出来,如下所示:

dfTable.write.format("orc").mode(SaveMode.Overwrite).saveAsTable("db1.test1")
Run Code Online (Sandbox Code Playgroud)

lon*_*tar 0

val table= spark.read.orc("hdfspath")
table.printSchema
Run Code Online (Sandbox Code Playgroud)

表是一个数据框,其中有模式。