Как определить размер данных при чтении таблицы с помощью спарка? - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь прочитать таблицу на postgres db, используя spark.Для этого я написал следующее:

val yearDF = spark.read.format("jdbc").option("url", connectionUrl)
                       .option("dbtable", s"(${execQuery}) as year2016")
                       .option("user", devUserName)
                       .option("password", devPassword)
                       .option("partitionColumn","epochVals")
                       .option("lowerBound", minEp)
                       .option("upperBound", maxEp)
                       .option("numPartitions",15)
                       .load()

Чтобы эффективно считывать дату и записывать выходные файлы, я пытался увидеть, могу ли я найти какой-нибудь онлайн-материал для определения размера читаемых данных.и сколько разделов, исполнителей и выходных файлов моя работа должна использовать для обработки данных.Я нашел эту ссылку , которая содержит информацию о том же самом.

Ссылка дает формулу:

number Of Megabytes = M = (N*V*W) / 1024^2
where

    N  =  number of records
    V  =  number of variables
    W  =  average width in bytes of a variable

Ссылка объясняет, как распределить вес каждомутипа данных, как показано ниже.

Type of variables                               Width
Integers, −127 <= x <= 100                        1
Integers, 32,767 <= x <= 32,740                   2
Integers, -2,147,483,647 <= x <= 2,147,483,620    4
Floats single precision                           4
Floats double precision                           8
Strings                                           maximum length

Столбцы моей исходной таблицы имеют следующий формат:

je_header_id:bigint
attribute10:character varying
doc_sequence_value:numeric
reference_date:date
source_transaction:numeric(30,6)
doc_sequence_id:numeric(15,0)
xx_last_update_tms:timestamp without time zone
xx_last_update_log_id:integer
xx_data_hash_id:bigint
xx_pk_id:bigint
mje_flag:character varying(1)

Я понял, как считать числовой тип данных как Integer или Double на основекак они определены.Чего я не понимаю, так это как определить вес столбца String.Ссылка говорит, чтобы дать длину самой большой строки в столбце.Но это дорогая операция, чтобы найти самую большую строку.Легко определить максимальный размер строки, если тип данных подобен character varying(100) -- Assuming 100 as weight in worst case Проблема возникает, если столбцу дан character varying без ограничения его размера.Может ли кто-нибудь дать мне знать, что я могу сделать, чтобы получить вес столбца String, или если есть какой-либо другой способ оценить размер входных данных, которые мы собираемся прочитать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...