Экспорт Sqoop из улья в sql застрял

Я использую кластер Windows Azure HDInsights Hadoop и пытаюсь экспортировать оттуда таблицу кустов на сервер SQL Azure.

Таблица куста действительно проста (на самом деле, пока она состоит из данных одного столбца без каких-либо пробелов и других специальных символов). На стороне сервера это также таблица со следующей схемой:

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://[email protected]/"

$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 не совпадают, у меня также есть исключение. Со стороны SQL я вижу доказательства успешных подключений.

И да, я настроил брандмауэр SQL Server, чтобы разрешить подключение, и службы Windows Azure также разрешены.

Есть ли у кого-нибудь предложения о том, что делать дальше? Был бы признателен за любую помощь.


person SvetaG    schedule 06.01.2015    source источник


Ответы (1)


До сих пор проблема решалась созданием кластеризованного индекса для таблицы SQL:

create clustered index exp_clustered_index on exp(line);

Похоже, что Azure SQL запрещает загрузку данных без него.

person SvetaG    schedule 06.01.2015