从azure sql数据仓库查询hadoop orc表

bogh5gae  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(369)

我在从azure sql数据仓库读取在azure hdinsight中创建的orc表时遇到问题。请参阅下面我设置hdinsight示例和azuresql数据仓库所遵循的顺序。
我创建了一个文本文件(sales.txt),内容如下
20150614|1|10.50
20150618|1|100.75
20150924|1|89.75
20160214|2|10456.90
20150922|3|34.70
20151021|3|43.70
20151225|3|65.90
20151231|3|87.50
20160101|4|1349.40
20160512|4|3982.40
20150608|5|398.90
20150929|5|981.80
20151225|5|482.80
20151231|5|289.60
20160214|5|688.50
20160531|5|682.80
然后我在azure中创建了一个hdinsight集群
我创建了一个数据库 hadoopdb 我使用以下查询在该数据库中创建了一个外部表

CREATE EXTERNAL TABLE IF NOT EXISTS hadoopdb.salestxt
(
    salesdate int,
    productid int,
    salesamt float
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' 
lines terminated by '\n' STORED AS TEXTFILE 
LOCATION 'wasbs:///<myclustercontainer>@<mystorageaccount>.blob.core.windows.net/Sales.txt';

使用以下查询加载数据 LOAD DATA INPATH '/Sales.txt' INTO TABLE hadoopdb.salestxt; 然后用下面的脚本创建了一个内部orc表

CREATE TABLE IF NOT EXISTS hadoopdb.sales
(
    salesdate int,
    productid int,
    salesamt float
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS ORC;

使用以下查询将数据移动到orc表
插入覆盖表hadoopdb.salesorc select*from hadoopdb.salestxt
在执行以下查询时,我确实在配置单元编辑器中看到了结果 select * from hadoopdb.sales 回到azuresql数据仓库,在ssms中使用以下查询创建数据源,

CREATE EXTERNAL DATA SOURCE ORCAzureStorage WITH 
(
    TYPE = HADOOP,
    LOCATION = 'wasbs://<myclustercontainer>@<mystorageaccount>.blob.core.windows.net',
    CREDENTIAL = AzureStorageCredential

);
使用以下命令创建外部文件格式

CREATE EXTERNAL FILE FORMAT ORCdefault
WITH 
(   
    FORMAT_TYPE = ORC,
    DATA_COMPRESSION = 'org.apache.hadoop.io.compress.DefaultCodec'
);

已创建架构 [hdp] 尝试使用下面的脚本创建外部表

CREATE EXTERNAL TABLE [hdp].FactSales 
(
    salesdate int,
    productid int,
    salesamt float  
)
WITH 
(
    LOCATION    ='/Sales.txt',
    DATA_SOURCE = ORCAzureStorage , 
    FILE_FORMAT = ORCdefault                
);

但是,此查询失败,出现以下错误
msg 105002,级别16,状态1,行1外部表访问失败,因为指定的路径名“/sales.txt/”不存在。请输入有效路径,然后重试。
我尝试了各种组合的位置,如'myclustercontainer@mystorageaccount.blob.core.windows.net/sales.txt/sales.txt'
sales.txt文件存在于存储帐户的位置'myclustercontainer@mystorageaccount.blob.core.windows.net/sales.txt/sales.txt'.
我遗漏了什么吗?

kmbjn2e3

kmbjn2e31#

azure sql dw当前不支持查询HDF。您需要将数据移动到windows azure存储blob。这里有一个教程
谢谢!凯西

相关问题