Импортированная таблица журналов с сервера SQL на HDFS в сжатом формате (.gz).
sqoop import --connect "jdbc:jtds:sqlserver://ServerName:1433/Test" --username sa --password root --table log --target-dir hdfs://localhost:50071/TestMain --fields-terminated-by "¤" --hive-import --create-hive-table --compress --split-by Logid
Создана внешняя таблица в кусте поверх этих данных.
CREATE EXTERNAL TABLE TestMain(LogMessage varchar(2000))
ROW FORMAT DELIMITED
FIELDS TERMINATED BY "¤"
STORED AS TEXTFILE
LOCATION 'hdfs://localhost:50071/TestMain';
Тежурналы имеют столбец типа данных nvarchar(max)
в SQL.Какой тип данных должен использоваться в Hive?
Я пытался использовать тип данных string
в кусте, но столкнулся со следующей проблемой: во время выполнения запроса select в кусте я вижу только первые несколько слов:поле.Я не вижу значения всего столбца.
Пример. Это поле имеет следующее значение в SQL:
Message: Procedure or function 'XYZ' expects parameter '@ABC', which was not supplied.
Stacktrace: This has whole 5 lines error stack trace.
Значение, видимое при запросе в Hive:
Procedure or function 'XYZ' expects parameter '@ABC', which was not supplied.
Кажется, есть некоторая проблема с разделителем полей и строк.Hive поддерживает только новую строку в качестве разделителя строк.Я думаю, что это вызывает проблему.
Пожалуйста, предложите решение или лучший способ запросить эти данные в HDFS.