从orc文件创建配置单元表,但不指定架构

a8jjtwal  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(304)

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

hadoop fs -get 
hadoop fs -put

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

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

但是,目标hadoop集群中的配置单元中没有相应的表。
有没有一种方法可以从hdfs中的orc文件在hive中创建表而不指定ddl或schema?因为orc文件本身包含模式信息。
我问这个问题的原因是因为原始配置单元表的模式是完全嵌套的,并且有许多字段。
目前我能想到的唯一解决方案是在spark中读取这些orc文件,并使用saveastable选项将它们写出来,如下所示:

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

qq24tv8q1#

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

表是一个Dataframe,其中包含模式。

相关问题