Код: Выделить всё
def createTable(self, outfile):
for i, row in enumerate(self.tst_results):
if len(row) < self.tst_cnt:
self.tst_results[i] = np.full(self.tst_cnt, np.nan, dtype=np.float32)
self.tst_results[i][:len(row)] = row
arr = np.vstack(self.tst_results)
columns = [pa.array(arr[:, i], type=pa.float32()) for i in range(arr.shape[1])]
self.table = pa.Table.from_arrays(columns, names=list(self.tst_list.keys()))
parquet_buffer = io.BytesIO() # Write Arrow Table to Parquet in an in-memory buffer
pq.write_table(self.table, parquet_buffer, compression='zstd')
parquet_buffer.seek(0) # Rewind buffer before reading
# Write the Parquet data into a ZIP archive (ZIP_STORED)
with zipfile.ZipFile(outfile + '.zip', mode='a', compression=zipfile.ZIP_DEFLATED) as zf:
zf.writestr('res_table.pq', parquet_buffer.read())
return
.withType(schema)
.withDictionaryEncoding(false)
.withCompressionCodec(CompressionCodecName.SNAPPY)
.build();
SimpleGroupFactory gf = new SimpleGroupFactory(schema);
for (int r = 0; r < rows; r++) {
var floatsRow = s.results_float.get(r);
Group g = gf.newGroup();
for (int c = 0; c < floatCols; c++) {
float fv = floatsRow.getFloat(c);
if (!Float.isNaN(fv)) g.add("f"+c, fv);
}
writer.write(g);
}
writer.close();
< /code>
занимает около 70 -х годов. Для меня, конечно, не кажется очевидным, что мне нужен петля над рядами для формата, ориентированного на столб. Но тогда я новичок в Parquet < /p>
thx. за вашу помощь!
Подробнее здесь: https://stackoverflow.com/questions/797 ... ng-in-java
Мобильная версия