Распаковка столбца 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 из этого массива байтов.