从 orc 文件创建配置单元表而不指定架构
Posted
技术标签:
【中文标题】从 orc 文件创建配置单元表而不指定架构【英文标题】:create hive table from orc file without specifying schema 【发布时间】:2017-01-20 21:07:35 【问题描述】:我的工作是在 hadoop 集群之间传输 hive 表。 我所做的是从源 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集群的hive中没有对应的表。
有没有一种方法可以在不指定 ddl 或架构的情况下从 hdfs 中的 orc 文件在 hive 中创建表? 由于 orc 文件本身包含架构信息。
我问这个问题的原因是因为原始配置单元表的架构非常嵌套并且有很多字段。
目前我能想到的唯一解决方案是在 spark 中读取这些 orc 文件,并使用 saveAsTable 选项将它们写出来,如下所示:
dfTable.write.format("orc").mode(SaveMode.Overwrite).saveAsTable("db1.test1")
【问题讨论】:
【参考方案1】:val table= spark.read.orc("hdfspath")
table.printSchema
表是一个数据框,其中包含架构。
【讨论】:
以上是关于从 orc 文件创建配置单元表而不指定架构的主要内容,如果未能解决你的问题,请参考以下文章