带有日期分区的 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 笔记本

HDInsight:HBase 还是 Azure 表存储?

Microsoft.Azure.Management.HDInsight.Job 的 .Netcore 替代品?

China Azure 在HDinsight 中使用Spark 功能

HDinsight 系列-使用证书登陆中国区Azure

基于 Azure 的 Hadoop 集群 (HDInsight) 如何转换为经典的本地 Hadoop 集群