gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:29:49 35 4
gpt4 key购买 nike

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

  1. 我创建了一个文本文件(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';
  • 使用以下查询加载数据

    将数据输入路径“/Sales.txt”加载到表 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 从hadoopdb.salestxt中选择*

  • 执行以下查询,我确实在 Hive 编辑器中看到了结果

    从hadoopdb.sales中选择*

  • 返回 Azure SQL 数据仓库,在 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
    );
  • 但是此查询失败并出现以下错误

    消息 105002,级别 16,状态 1,第 1 行EXTERNAL TABLE 访问失败,因为指定的路径名​​“/Sales.txt/”不存在。输入有效路径并重试。

    我尝试了 LOCATION 的各种组合,例如'myclusterconta [email protected]/Sales.txt/Sales.txt'

    Sales.txt 文件存在于存储帐户中的位置'myclustercontai [email protected]/Sales.txt/Sales.txt'。

    我错过了什么吗?

    最佳答案

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

    谢谢!凯西

    关于azure - 从 Azure SQL 数据仓库查询 Hadoop ORC 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39169226/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com