0

我可以在以下查询中使用双引号 ->

$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

它给了我以下错误-

在此处输入图像描述

请给我一些信息,为什么会出现这种零星行为。两种实现都创建了工作,那么为什么一个实现接受双引号而另一个不接受。

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 回答