0

次のクエリで二重引用符を使用できます->

$subscriptionName = "***"
$clusterName = "***" 
$queryString = "SELECT city FROM logs WHERE city =""New York"";"
Use-AzureHDInsightCluster $clusterName
Invoke-Hive -Query $queryString

しかし、次の PowerShell コマンドで引用符を使用できません -

$subscriptionName = "***"
$storageAccountName = "***"
$containerName = "***"
$clusterName = "***"

$queryString = "SELECT city FROM logs WHERE city =""New York"";"

$hiveJobDefinition = New-AzureHDInsightHiveJobDefinition -Query $queryString

Select-AzureSubscription $subscriptionName
$hiveJob = Start-AzureHDInsightJob -Cluster $clusterName -JobDefinition $hiveJobDefinition

Wait-AzureHDInsightJob -Job $hiveJob -WaitTimeoutInSeconds 36000

Get-AzureHDInsightJobOutput -Cluster $clusterName -JobId $hiveJob.JobId -StandardOutput

次のエラーが表示されます-

ここに画像の説明を入力

この散発的な動作の理由を教えてください。両方の実装がジョブを作成します。次に、一方の実装が二重引用符を受け入れ、もう一方の実装が受け入れない理由。

4

1 に答える 1

-1

クエリを引用する別の方法をいくつか試して、さらにうまくいくかどうかを確認してください。

一重引用符

$queryString = 'SELECT city FROM logs WHERE city ="New York";'

バックティックエスケープ

$queryString = "SELECT city FROM logs WHERE city =`"New York`";"

私の推測では、それはStart-AzureHDInsightJob文字列を異なる方法で解釈している方法です。

更新 1

上記がうまくいかなかったと聞いて申し訳ありません。試してみてください(一重引用符文字列):

$queryString = "SELECT city FROM logs WHERE city ='New York';"

更新 2

New-AzureHDInsightHiveJobDefinitionを見ると、ジョブ名が指定されていません。ジョブ名を指定しない場合は、次が適用されます。

The name of the Hive job being defined. If the name is not specified, 
it is "Hive: <first 100 characters of Query>" by default.

ジョブ名にはクエリが含まれているため、ジョブ名を指定してみて、それが役立つかどうかを確認してください。

于 2014-01-03T09:15:57.230 に答える