我在从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'.
我遗漏了什么吗?
1条答案
按热度按时间kmbjn2e31#
azure sql dw当前不支持查询HDF。您需要将数据移动到windows azure存储blob。这里有一个教程
谢谢!凯西