Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Azure SQL数据仓库查询Hadoop ORC表_Azure_Hadoop_Orc_Azure Sqldw - Fatal编程技术网

从Azure SQL数据仓库查询Hadoop ORC表

从Azure SQL数据仓库查询Hadoop ORC表,azure,hadoop,orc,azure-sqldw,Azure,Hadoop,Orc,Azure Sqldw,从Azure SQL数据仓库读取Azure HDInsight中创建的ORC表时遇到问题。请参阅下面我设置HDInsight实例和Azure SQL数据仓库所遵循的顺序 我创建了一个文本文件(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

从Azure SQL数据仓库读取Azure HDInsight中创建的ORC表时遇到问题。请参阅下面我设置HDInsight实例和Azure SQL数据仓库所遵循的顺序

  • 我创建了一个文本文件(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';
    
  • 使用以下查询将数据移动到ORC表

    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';
    
    插入覆盖表hadoopdb.salesorc 从hadoopdb.salestxt中选择*

  • 执行以下查询时,我确实可以在配置单元编辑器中看到结果

    从hadoopdb.sales中选择*

  • 回到Azure SQL数据仓库,在SSMS中使用以下查询创建数据源

    CREATE EXTERNAL DATA SOURCE ORCAzureStorage WITH 
    (
        TYPE = HADOOP,
        LOCATION = 'wasbs://<myclustercontainer>@<mystorageaccount>.blob.core.windows.net',
        CREDENTIAL = AzureStorageCredential
    
  • 已创建架构
    [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”


    我遗漏了什么吗?

    Azure SQL DW当前不支持查询HDF。您需要将数据移动到Windows Azure存储Blob。 这有一个教程

    谢谢!
    Casey

    Azure SQL DW当前不支持查询HDF。您需要将数据移动到Windows Azure存储Blob。 这有一个教程

    谢谢!
    凯西

    谢谢凯西。我看了你分享的链接。然而,它并没有谈论任何关于兽人的事情。文件格式为TextFileFormat,而不是ORC。我还将沙盒实现更改为HDInsight。问题现在已更新,以反映从HDFS到Azure Blob的更改。你能看一下吗?谢谢,凯西。我看了你分享的链接。然而,它并没有谈论任何关于兽人的事情。文件格式为TextFileFormat,而不是ORC。我还将沙盒实现更改为HDInsight。问题现在已更新,以反映从HDFS到Azure Blob的更改。您能看一下吗?您的外部表位置末尾缺少一个“/”使其成为
    location='/Sales.txt/'
    您的外部表位置末尾缺少一个“/”使其成为
    location='/Sales.txt/'
    CREATE EXTERNAL TABLE [hdp].FactSales 
    (
        salesdate int,
        productid int,
        salesamt float  
    )
    WITH 
    (
        LOCATION    ='/Sales.txt',
        DATA_SOURCE = ORCAzureStorage , 
        FILE_FORMAT = ORCdefault                
    );