Я пытаюсь прочитать таблицу на 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, или если есть какой-либо другой способ оценить размер входных данных, которые мы собираемся прочитать?