我有一项工作要在hadoop集群之间传输配置单元表。我所做的是从源hadoop集群下载orc文件,然后使用以下命令将orc文件上传到目标hdfs集群。
hadoop fs -get
hadoop fs -put
目标hadoop-clustr中的orc文件可以在spark应用程序中通过以下方式读取:
df = sqlContext.sql('select * from orc.`path_to_where_orc_file_is`')
但是,在目标hadoop集群中的配置单元中没有相应的表。
有没有一种方法可以在不指定ddl或模式的情况下,从hdfs中的orc文件在hive中创建表?由于orc文件本身包含模式信息。
我之所以问这个问题,是因为原始配置单元表的模式是嵌套的,并且有很多字段。
目前,我能想到的唯一解决方案是读取spark中的orc文件,并使用saveAsTable选项写出它们,如下所示:
dfTable.write.format("orc").mode(SaveMode.Overwrite).saveAsTable("db1.test1")
val table= spark.read.orc("hdfspath")
table.printSchema
表是一个数据帧,其中包含模式。