Паркет написание на JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Паркет написание на Java

Сообщение Anonymous »

Мне нужны написать большие файлы из Java до паркета. У меня есть рабочий код с Parquet-Hadoop. Но это примерно в 10 раз медленнее, чем делать то же самое с Python (pq.write_table). Кажется, штраф исходит от зацикливания через ряды, что звучит неправильно для формата столбца? Есть ли встроение C ++ в какое-то место с JNI или т.п.

Код: Выделить всё

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
требует около 10 с.writer = ExampleParquetWriter.builder(new ZipOutputFile(zipOut, pqZip))
.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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»