我可以在以下查询中使用双引号 - >
$subscriptionName = "***"
$clusterName = "***"
$queryString = "SELECT city FROM logs WHERE city =""New York"";"
Use-AzureHDInsightCluster $clusterName
Invoke-Hive -Query $queryString
但我无法在以下PowerShell Comamnds中使用引用 -
$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
它给了我以下错误 -
请给我一些信息,为什么这是零星的行为。这两个实现都创建了作业,然后为什么一个实现接受双引号而其他实现不接受。
答案 0 :(得分:-1)
尝试使用几种方法来引用您的查询,看看您是否还有进一步的信息:
单引号
$queryString = 'SELECT city FROM logs WHERE city ="New York";'
Backtick Escape
$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.
因此,您的工作名称将包含您的查询,请尝试指定工作名称以查看是否有帮助。