Распаковка столбца varbinary с данными xml и вставка его в таблицу hive

У нас есть SQL Server 2016 с varbinaryстолбец, содержащий сжатый XML. Теперь мы хотим загрузить данные в таблицу cdp hive (Hive 3.1.3000), ДЕКОМПРЕССИРУЯ ее.

Первоначально мы использовали java-утилиту для распаковки и накачивания данных, но теперь мы ищем альтернативный подход, такой как pyspark.

Мы использовали нижеприведенный java-код для раздувания данных:

      if( colType == java.sql.Types.VARBINARY ) {
msg = "Processing VARBINARY " + colLabel;
// logger.info("Checking VARBINARY column: " + colLabel);
if( inflateColumnList.contains(colLabel) ) {
ByteArrayInputStream bais = new ByteArrayInputStream( rs.getBytes( colIndex ));
Inflater inflater = new Inflater(true);
InflaterInputStream iis = new InflaterInputStream(bais, inflater); 
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
while(iis.available() != 0){
buffer.write(iis.read());
}
iis.close();
result = new String(buffer.toByteArray(), "UTF-8" );
}
else {
logger.info(" VARBINARY column: " + colLabel + " is NOT in the unzip list");
result = Base64.getEncoder().encodeToString(rs.getBytes(colIndex) );
}

Я нахожусь в точке, где могу получить массив байтов из фрейма данных, как показано ниже:

      bytearrayobj = df.select(F.collect_list('itemdetailsdata')).first()[0][0]
print(zlib.decompress(bytes.decode(bytearrayobj,'utf-8')))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: descriptor 'decode' requires a 'str' object but received a 'bytearray'

Подскажите, пожалуйста, что мне нужно сделать, чтобы сгенерировать распакованный XML из этого массива байтов.

0 ответов

Другие вопросы по тегам