从配置单元到 sql 的 Sqoop 导出被卡住了
Sqoop export from hive to sql is stuck
我正在使用 Windows Azure HDInsights Hadoop 集群,我正在尝试将配置单元 table 从那里导出到 SQL Azure 服务器。
蜂巢table非常简单(实际上,目前它由一列数据组成,没有任何space字符和其他特殊符号)。在服务器端,它也是一个具有以下架构的 table:
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% 映射后卡住并在超时后完成,没有任何错误和异常。
现在我知道作业在 Hadoop 中看到数据(如果我指定其他路径,它会抛出异常)。如果配置单元数据架构和 sql table 架构不匹配,我也有异常。从 SQL 方面,我看到了成功连接的证据。
是的,我已经配置了 SQL 服务器防火墙以允许连接并且 Windows Azure 服务也被允许。
有人对下一步该做什么有什么建议吗?将不胜感激任何帮助。
到目前为止,通过为 SQL table:
创建聚簇索引解决了一个问题
create clustered index exp_clustered_index on exp(line);
似乎 Azure SQL 禁止在没有它的情况下上传数据。
我正在使用 Windows Azure HDInsights Hadoop 集群,我正在尝试将配置单元 table 从那里导出到 SQL Azure 服务器。
蜂巢table非常简单(实际上,目前它由一列数据组成,没有任何space字符和其他特殊符号)。在服务器端,它也是一个具有以下架构的 table:
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% 映射后卡住并在超时后完成,没有任何错误和异常。
现在我知道作业在 Hadoop 中看到数据(如果我指定其他路径,它会抛出异常)。如果配置单元数据架构和 sql table 架构不匹配,我也有异常。从 SQL 方面,我看到了成功连接的证据。
是的,我已经配置了 SQL 服务器防火墙以允许连接并且 Windows Azure 服务也被允许。
有人对下一步该做什么有什么建议吗?将不胜感激任何帮助。
到目前为止,通过为 SQL table:
创建聚簇索引解决了一个问题create clustered index exp_clustered_index on exp(line);
似乎 Azure SQL 禁止在没有它的情况下上传数据。