从配置单元到sql的sqoop导出被卡住

jbose2ul  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(423)

我使用的是windowsazurehdinsights hadoop集群,我正在尝试将配置单元表从那里导出到sqlazure服务器。
配置单元表非常简单(实际上,目前它由一列数据组成,没有任何空格字符和其他特殊符号)。在服务器端,它也是一个具有以下架构的表:

CREATE TABLE exp (line [nvarchar] (100))

对于导出,我使用以下ps脚本:

$tableName = 'exp'

$connectionString = "jdbc:sqlserver://$sqlDatabaseServerName.database.windows.net;user=$sqlDatabaseLogin@$sqlDatabaseServerName;password=$sqlDatabasePassword;database=$databaseName"

$exportDir = "wasb://test1@mystorage.blob.core.windows.net/"

$sqoopDef = New-AzureHDInsightSqoopJobDefinition -Command "export --connect $connectionString --table $tableName --export-dir $exportDir --fields-terminated-by '\t' --lines-terminated-by '\n'"

$sqoopJob = Start-AzureHDInsightJob -Cluster $clusterName -JobDefinition $sqoopDef -Debug -Verbose
Wait-AzureHDInsightJob -WaitTimeoutInSeconds 3600 -Job $sqoopJob

Write-Host "Standard Error" -BackgroundColor Green
Get-AzureHDInsightJobOutput -Cluster $clusterName -JobId $sqoopJob.JobId -StandardError
Write-Host "Standard Output" -BackgroundColor Green
Get-AzureHDInsightJobOutput -Cluster $clusterName ;-JobId $sqoopJob.JobId -StandardOutput

由于某些原因,导出在100%Map之后被卡住,并且在超时之后完成,没有任何错误和异常。
现在我知道job在hadoop中看到数据(如果我指定其他路径,它会抛出异常)。如果配置单元数据模式和sql表模式不匹配,我也有例外。从sql方面,我看到了成功连接的证据。
是的,我已经配置了sql server防火墙以允许连接,也允许使用windows azure服务。
有人对下一步做什么有建议吗?如果有任何帮助,我将不胜感激。

b1payxdu

b1payxdu1#

到目前为止,通过为sql表创建聚集索引解决了一个问题:

create clustered index exp_clustered_index on exp(line);

似乎azure sql禁止在没有它的情况下上载数据。

相关问题