Я нашел этот билет apache-parquet https://issues.apache.org/jira/browse/PARQUET-686, который помечен как разрешенный для parquet-mr
1.8.2. Мне нужна функция, рассчитанная min/max
в метаданных паркета для столбца (string
или BINARY
).
И ссылка на это письмо https://lists.apache.org/thread.html/%3CCANPCBc2UPm+oZFfP9oT8gPKh_v0_BF0jVEuf=Q3d-5=ugxSFbQ@mail.gmail.com%3E
который использует scala
вместо pyspark
в качестве примера:
Configuration conf = new Configuration();
+ conf.set("parquet.strings.signed-min-max.enabled", "true");
Path inputPath = new Path(input);
FileStatus inputFileStatus =
inputPath.getFileSystem(conf).getFileStatus(inputPath);
List<Footer> footers = ParquetFileReader.readFooters(conf, inputFileStatus, false);
Мне не удалось установить это значение в pyspark
(возможно, я устанавливаю его не в том месте?)
пример кадра данных
import random
import string
from pyspark.sql.types import StringType
r = []
for x in range(2000):
r.append(u''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10)))
df = spark.createDataFrame(r, StringType())
Я пробовал несколько разных способов настройки этой опции:
df.write.format("parquet").option("parquet.strings.signed-min-max.enabled", "true").save("s3a://test.bucket/option")
df.write.option("parquet.strings.signed-min-max.enabled", "true").parquet("s3a://test.bucket/option")
df.write.option("parquet.strings.signed-min-max.enabled", True).parquet("s3a://test.bucket/option")
Но во всех сохраненных файлах паркета отсутствуют значения ST / STATS для столбца BINARY. Вот пример вывода метаданных из одного из файлов паркета:
creator: parquet-mr version 1.8.3 (build aef7230e114214b7cc962a8f3fc5aeed6ce80828)
extra: org.apache.spark.sql.parquet.row.metadata = {"type":"struct","fields":[{"name":"value","type":"string","nullable":true,"metadata":{}}]}
file schema: spark_schema
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
value: OPTIONAL BINARY O:UTF8 R:0 D:1
row group 1: RC:33 TS:515
---------------------------------------------------------------------------------------------------
Кроме того, на основе этой цепочки электронных писем 1036 * и вопрос: Укажите свойства паркета pyspark
Я попытался проникнуть в конфигурацию через приватный API pyspark:
spark.sparkContext._jsc.hadoopConfiguration().setBoolean("parquet.strings.signed-min-max.enabled", True)
Так что я все еще не могу установить этот конф parquet.strings.signed-min-max.enabled
в parquet-mr
(или он установлен, но что-то пошло не так)
- Можно ли настроить
parquet-mr
из pyspark
- pyspark 2.3.x поддерживает статистику столбцов BINARY?
- Как использовать функцию PARQUET-686 для добавления
min/max
метаданных для строковых столбцов в файле паркета?