2017-12-27 10 views
0

ADFv2からU-SQLスクリプトを実行しようとしていますが、実行を妨げるエラーがあります。この問題に関するMSの文書が役に立たないことを考慮して、私は再びこの問題を解決するための助けを求めています。ADFからU-SQLスクリプトを実行できません:ScriptPathをnullにしないでください。

  1. 最初の問題は、U-SQLスクリプトをADLAにデプロイする方法です。参考になるものは見つけられず、ADLAとAzure Blob Storageの2つの形式(.usqlと.txt)でスクリプトをコピー&ペーストしてしまいました。 (これも問題の1つになる可能性があります)。

  2. MS documentationに従ってARMを作成しましたが、エラーが発生して失敗しています:ScriptPath should not be nullこの値はリンクサービスおよびアクティビティでも既に指定されているため、奇妙です。

以下は、我々が作成したLSと活動している:

LinkedService:

{ 
    "type": "linkedservices", 
    "name": "LinkedServiceofAzureBlobStorageforscriptPath", 
    "dependsOn": ["[parameters('dataFactoryName')]"], 
    "apiVersion": "[variables('apiVersion')]", 
    "properties": { 
     "type": "AzureStorage", 
     "typeProperties": { 
      "connectionString": { 
       "type": "SecureString", 
       "value": "DefaultEndpointsProtocol=https;AccountName=<account>;AccountKey=<key>;EndpointSuffix=core.windows.net" 
      } 
      "scriptPath": "container\\script.txt" 
      //"scriptPath": "https://storage.blob.core.windows.net/container/script.txt"//"wasb://[email protected]/script.txt", 
     } 
    } 
} 

活動:

{ 
      "type": "DataLakeAnalyticsU-SQL", 
      "typeProperties": { 
       //"script": "master.dbo.sp_test()", 
       "scriptPath": "container\\script.txt"//"scriptPath": "https://storage.blob.core.windows.net/container/script.txt"//"wasb://[email protected]/script.txt", 
       "scriptLinkedService": { 
        "referenceName": "LinkedServiceofAzureBlobStorageforscriptPath", 
        "type": "LinkedServiceReference" 
       }, 
       "degreeOfParallelism": 3, 
       "priority": 100 
      }, 
      "name": "CopyFromAzureBlobToAzureSQL", 
      "description": "Copy data frm Azure blob to Azure SQL", 
      "linkedServiceName": { 
       "referenceName": "AzureDataLakeAnalyticsLinkedService", 
       "type": "LinkedServiceReference" 
      } 
     } 

はまた this approachまだありません成功を収めてみました。

これは、我々がテストしているダミーのスクリプトです:

@a = 
    SELECT * 
    FROM(
     VALUES 
     (
      "Contoso", 
      1500.0 
     ), 
     (
      "Woodgrove", 
      2700.0 
     ), 
     (
      "Contoso", 
      1500.0 
     ), 
     (
      "Woodgrove", 
      2700.0 
     ), 
     (
      "Contoso", 
      1500.0 
     ), 
     (
      "Woodgrove", 
      2700.0 
     ), 
     (
      "Contoso", 
      1500.0 
     ), 
     (
      "Woodgrove", 
      2700.0 
     ), 
     (
      "Contoso", 
      1500.0 
     ), 
     (
      "Woodgrove", 
      2700.0 
     ), 
     (
      "Contoso", 
      1500.0 
     ), 
     (
      "Woodgrove", 
      2700.0 
     ) 
     ) AS 
       D(customer, amount); 
OUTPUT @a 
TO "/data"+DateTime.Now.ToString("yyyyMMddHHmmss")+".csv" 
USING Outputters.Csv(); 

いますが、スクリプト内の背後にあるいくつかのコードでいくつかのより複雑な例を指すことができれば、それは素晴らしいことです。

ありがとうございました!

アップデート2018年1月26日

usqlの展開についてMSと協議した後、我々は、PowerShellのコマンドの組み合わせで来た:

  • 我々はあるの.dllをアップロードするスクリプトを実行しますDatalake上のフォルダにあるu-sqlアセンブリのbinにあります。
  • ディレクトリをループし、それぞれのアセンブリを個別に作成します。
  • 私たちはDatalake Analyticsでストアドプロシージャとしてそれらを作成し、それらのプロシージャを必要なパラメータで実行するシンプルなu-sqlスクリプトをアップロードしました。

答えて

1

リンクされたサービスでスクリプトパスは必要ありません。ブロブリンクサービスがちょうどあるべき

{ 
    "name": "Blob Name", 
    "properties": { 
     "type": "AzureStorage", 
     "typeProperties": { 
      "connectionString": { 
       "type": "SecureString", 
       "value": "DefaultEndpointsProtocol=https;AccountName=etc" 
      } 
     }, 
     "connectVia": { 
      "referenceName": "Your IR Ref", 
      "type": "IntegrationRuntimeReference" 
     } 
    } 
} 

その後の活動には、リンクされたサービスのための参照名で以下のようにコンテナおよびファイル名を使用してスクリプトを参照します。

"activities": [ 
     { 
      "name": "U-SQL1", 
      "type": "DataLakeAnalyticsU-SQL", 
      "policy": { 
       "timeout": "7.00:00:00", 
       "retry": 0, 
       "retryIntervalInSeconds": 20 
      }, 
      "typeProperties": { 
       "scriptPath": "u-sql1/Test", 
       "degreeOfParallelism": { 
        "value": "5", 
        "type": "Expression" 
       }, 
       "priority": 1, 
       "compilationMode": "Full", 
       "scriptLinkedService": { 
        "referenceName": "Your Blob Ref", 
        "type": "LinkedServiceReference" 
       } 
      }, 
      "linkedServiceName": { 
       "referenceName": "Your ADLa Ref", 
       "type": "LinkedServiceReference" 
      } 
     }, 

は情報については、私は、MSのドキュメントを無視し、私は民間のプレビューへのアクセスを持っているように、新しいのdevのUIを使用してこのJSONを作成しました。上記のテストの結果、私はここでブロブポストでそれを使用されるように動作されています:

https://mrpaulandrew.com/2017/12/20/controlling-u-sql-job-aus-with-azure-data-factory-v2-pipeline-parameters/

は、この情報がお役に立てば幸いです。

+0

"container \\ script.txt" - > "container/script.usql"のスクリプトパスを変更しました。また、Blob LSの定義に問題がありました(もっと明確な答えで投稿します)。依存する.dll(質問のパート1)を使用してu-sqlスクリプトをデプロイする方法と、scriptPathが必要なので、u-sqlプロシージャを実行する方法についてのチュートリアルを教えてください。私が見つけたすべてのサンプルはそれを持っていません。 –

関連する問題