Hadoop Hive查询中的双引号

时间:2014-01-03 06:05:28

标签: powershell azure hive hdinsight

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

$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

它给了我以下错误 -

enter image description here

请给我一些信息,为什么这是零星的行为。这两个实现都创建了作业,然后为什么一个实现接受双引号而其他实现不接受。

1 个答案:

答案 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.

因此,您的工作名称将包含您的查询,请尝试指定工作名称以查看是否有帮助。