带有日期分区的 HdInsight Azure DW Polybase 到 Hive 表 (ORC) 失败
Posted
技术标签:
【中文标题】带有日期分区的 HdInsight Azure DW Polybase 到 Hive 表 (ORC) 失败【英文标题】:HdInsight Azure DW Polybase to Hive Table (ORC) with Date partition is failing 【发布时间】:2017-11-06 17:51:03 【问题描述】:我正在尝试在 Azure 数据仓库中为 Hive 表创建一个 polybase 外部表,该表存储为 ORC(HD Insight Data Lake)并在我查询外部表时按日期分区,它在 SQL 服务器中失败而没有任何适当的错误消息。
当我不使用分区时,我可以使用外部表访问 hive ORC 表,但是使用分区时,我在没有任何正确错误消息的情况下出现错误。
错误:
Msg 106000,16 级,状态 1,33 行索引:23,大小:23
详情:
蜂巢表:
创建外部表 DL_ClickStream_fnl(
.
.) PARTITIONED BY(TIME_STAMP Date) 存储为 ORC;
Azure DW 外部表:
创建外部表 [stg].[dl_clickstream_procd] (
.
.
) WITH (DATA_SOURCE = [AzureDataLakeStore_clusters],LOCATION = N'clusters/BLMSpark/hive/warehouse/coremetrics.db/dl_clickstream_procd',FILE_FORMAT = [ORCFileFormat_DL],REJECT_TYPE = VALUE,REJECT_VALUE = 2)
文件格式:
使用 (FORMAT_TYPE = ORC) 创建外部文件格式 [ORCFileFormat_DL]
【问题讨论】:
嗯,Azure SQL 数据仓库目前不只支持 Polybase 连接到 Azure Blob 存储和 Azure Data Lake 吗?查看黄色箭头here。 SQL Server 2016 和 APS 可以连接到 Hadoop。微妙的哈。 【参考方案1】:在 Hive 中,分区列是从目录元数据派生的虚拟列。 PolyBase 直接读取文件无法填充分区列。在您的 SQL DW 外部表 DDL 中,删除按列分区,您的负载应该可以工作。
【讨论】:
以上是关于带有日期分区的 HdInsight Azure DW Polybase 到 Hive 表 (ORC) 失败的主要内容,如果未能解决你的问题,请参考以下文章
带有企业安全包的 HDInsight 上的 Zeppelin 笔记本
Microsoft.Azure.Management.HDInsight.Job 的 .Netcore 替代品?