0

Azure HDInsight で作成された ORC テーブルを Azure SQL Data Warehouse から読み取る際に問題が発生しています。以下のシーケンスを参照して、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 |
3 | 65.90 20150608|5|398.90 20150929|5|981.80 20151225|5|482.80 20151231|5|289.60 20160214|5|688.50 20160531|5|682.80







  1. 次に、Azure で HDInsight クラスターを作成しました

  2. データベースを作成しましたhadoopdb

  3. 次のクエリを使用して、そのデータベースに外部テーブルを作成しました

    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';
    
  4. 次のクエリを使用してデータをロードしました

    LOAD DATA INPATH '/Sales.txt' INTO TABLE hadoopdb.salestxt;

  5. 次に、次のスクリプトで内部 ORC テーブルを作成しました

    CREATE TABLE IF NOT EXISTS hadoopdb.sales
    (
        salesdate int,
        productid int,
        salesamt float
    ) 
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS ORC;
    
  6. 次のクエリでORCテーブルにデータを移動しました

    INSERT OVERWRITE TABLE hadoopdb.salesorc SELECT * FROM hadoopdb.salestxt

  7. 次のクエリを実行すると、Hive エディターに結果が表示されます

    select * from hadoopdb.sales

  8. Azure SQL データ ウェアハウスに戻り、SSMS で次のクエリを使用してデータ ソースを作成しました。

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

    );

  9. 以下を使用して外部ファイル形式を作成しました

    CREATE EXTERNAL FILE FORMAT ORCdefault
    WITH 
    (   
        FORMAT_TYPE = ORC,
        DATA_COMPRESSION = 'org.apache.hadoop.io.compress.DefaultCodec'
    );
    
  10. 作成されたスキーマ[hdp]

  11. 以下のスクリプトで EXTERNAL TABLE を作成しようとしています

    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/' が存在しないため失敗しました。有効なパスを入力して、再試行してください。

「myclustercontainer@mystorageaccount.blob.core.windows.net/Sales.txt/Sales.txt」などの LOCATION のさまざまな組み合わせを試しました

Sales.txt ファイルは、場所 'myclustercontainer@mystorageaccount.blob.core.windows.net/Sales.txt/Sales.txt' のストレージ アカウントに存在します。

何か不足していますか?

4

1 に答える 1