我在从Azure SQL数据仓库中读取Azure HDInsight中创建的ORC表时遇到问题。请参阅以下序列我已设置HDInsight实例以及Azure SQL数据仓库。
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表
INSERT OVERWRITE TABLE hadoopdb.salesorc SELECT * FROM hadoopdb.salestxt
执行以下查询,我确实在Hive编辑器中看到了结果
select * from hadoopdb.sales
返回Azure SQL数据仓库,使用SSMS中的以下查询创建DATA SOURCE,
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]
尝试使用
下面的脚本创建EXTERNAL TABLECREATE EXTERNAL TABLE [hdp].FactSales
(
salesdate int,
productid int,
salesamt float
)
WITH
(
LOCATION ='/Sales.txt',
DATA_SOURCE = ORCAzureStorage ,
FILE_FORMAT = ORCdefault
);
但是此查询失败并显示以下错误
Msg 105002,Level 16,State 1,Line 1 EXTERNAL TABLE访问失败,因为指定的路径名'/Sales.txt/'不存在。输入有效路径,然后重试。
我尝试了各种LOCATION组合,例如 'myclustercontainer@mystorageaccount.blob.core.windows.net/Sales.txt/Sales.txt'
Sales.txt文件存在于位置的存储帐户中 'myclustercontainer@mystorageaccount.blob.core.windows.net/Sales.txt/Sales.txt'。
我错过了什么吗?