【发布时间】:2021-05-04 05:30:47
【问题描述】:
我们已经运行了一个 polybase 服务来查询我们的 hadoop 集群。 这是我们hadoop端的文件结构:
/warehouse/tablespace/managed/hive/xxxxxxx/dxxxxxx/created_month=2019-11/base_0000083/bucket_00001 的结构 文件版本:0.12 和 ORC_135 行数:51107 压缩:ZLIB 压缩大小:262144 编号:整数, xxx xxx xxx
这边有16个字段
另一方面,我创建了一个文件格式如下:
CREATE EXTERNAL FILE FORMAT [OrcFileFormat] WITH (
FORMAT_TYPE = ORC,
DATA_COMPRESSION = N'org.apache.hadoop.io.compress.DefaultCodec')
外部表如下:
CREATE EXTERNAL TABLE [dbo].[test]
(
id:int,
xxx
xxx
xxx
)
WITH (DATA_SOURCE = [hadoop_test],
LOCATION = N'//warehouse/tablespace/managed/hive/xxxxxxx/dxxxxxx/created_month=2019-
11/base_0000083/bucket_00001'
,FILE_FORMAT = [OrcFileFormat]
,REJECT_TYPE = VALUE,
REJECT_VALUE = 500)
使用完全复制的字段,对数据类型的唯一更改是将字符串更改为 varchar 并将时间戳更改为日期时间。 表创建成功;但是,当执行以下查询时:
SELECT TOP (1000) *
FROM [dbo].test
抛出此错误:
无法针对链接服务器“(null)”的 OLE DB 提供程序“MSOLEDBSQL”执行查询“远程查询”。由于内部错误,外部文件访问失败:'文件 //warehouse/tablespace/managed/hive/xxxxxxx/dxxxxxx/created_month=2019-11/base_0000083/bucket_00001:HdfsBridge::CreateRecordReader - 创建记录读取器时遇到意外错误:HadoopExecutionException:列数不匹配。源文件有 6 列,外部表定义有 16 列。'
有人可以帮帮我吗?
【问题讨论】: