我们有 2 个集群,一个是 Map R,另一个是我们自己的。我们希望使用 Map R 数据在我们自己的硬件中创建新设置。
- 我已经从Map R群集复制了所有orc文件,并遵循相同的文件夹结构
- 创建了一个位置为 #1 的 orc 格式表
- 然后执行了这个命令"MSCK 修复表<>">
上述步骤通过没有错误,但是当我查询分区时,作业失败并出现以下错误
java.lang.IllegalArgumentException: Buffer size too small. size = 262144 needed = 4958903
at org.apache.hadoop.hive.ql.io.orc.InStream$CompressedStream.readHeader(InStream.java:193)
at org.apache.hadoop.hive.ql.io.orc.InStream$CompressedStream.read(InStream.java:238)
有人可以告诉我我们可以直接从 orc 文件创建 HIVE ORC 分区表吗?
我的存储是 Azure 数据湖。
根据您的描述,根据我的理解,我认为您希望将所有 orc 文件从一个集群复制到另一个集群,并将这些 orc 文件加载为 hive 表。
为此,请尝试按照以下命令创建用于加载orcfile数据的外部表。
CREATE EXTERNAL TABLE IF NOT EXSISTS <table name> (<column_name column_type>, ...)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS ORC
LOCATION '<orcfile path>'
如果不知道orc文件的列列表,可以参考Hive手册ORC File Dump Utility
通过hive --orcfiledump -j -p <location-of-orc-file-or-directory>
打印JSON格式的ORC文件元数据。