
Евгений
14.09.2018
23:15:42

Александр
14.09.2018
23:16:18

Евгений
14.09.2018
23:16:32
а где файлы-то лежат?
в одной папке?

Google

Александр
14.09.2018
23:17:15
нет, много папок и подпапок

Grigory
14.09.2018
23:17:41
кол-во патриций зависит от ковло файлов и колва ехекуторов

Евгений
14.09.2018
23:18:10

Александр
14.09.2018
23:18:13
да
они регуляркой и задаются

Евгений
14.09.2018
23:18:26
ну тогда проще некуда

Grigory
14.09.2018
23:18:28
ну и все)

Евгений
14.09.2018
23:18:40
spark.read.csv("регулярка")

Александр
14.09.2018
23:18:51
сейчас так
sc.textFile(day)

Евгений
14.09.2018
23:18:59
хочешь сделать по красоте - фигачь на датафрейм апи)

Grigory
14.09.2018
23:19:04

Александр
14.09.2018
23:19:40
а партицировать нужно чтобы лучше делилось между воркерами ? кусочки поменьшее были ?

Google

Евгений
14.09.2018
23:19:43
не, если дохрена данных, то будет размер данных / 128мб

Grigory
14.09.2018
23:19:56

Александр
14.09.2018
23:20:00
хорошо я зашел спросить, спасибо сообществу, так бы дураком и умер

Grigory
14.09.2018
23:20:08

Евгений
14.09.2018
23:20:12
если терабайт, то соответственно инпут сплитов будет 80к
вполне хватает)
можно и подтюнить, если так хочется
можно даже сменить 200 на что-нибудь другое, например на число ядер, отданных джобе)

Grigory
14.09.2018
23:21:52
ну, датафреймы будут быстрее и по красоте, если ему не надо будет выводить 100% считанных данных
Так то да; наверное через csv + регулярку все заработает

Евгений
14.09.2018
23:22:54
быстрее писать код на 500 тыщ процентов

Grigory
14.09.2018
23:23:05
У меня ощущение что прям для такого случая и придумали эту функцию

Александр
14.09.2018
23:23:21

Евгений
14.09.2018
23:23:25
там небось в map написано line.split(",")?

Grigory
14.09.2018
23:23:43

Александр
14.09.2018
23:24:05

Евгений
14.09.2018
23:24:14
а их и будет 200
ну дык потому что у всех на кластерах по 200 коров, а если больше, значит народу дохрена)

Александр
14.09.2018
23:24:33
так-с

Grigory
14.09.2018
23:24:46

Александр
14.09.2018
23:24:50
где почитать код с нормальной обработкой csv с hdfs чтобы вас вопросами не мучать ?

Google

Александр
14.09.2018
23:24:56
я бы посмотрел бы код и нормально сделал

Grigory
14.09.2018
23:25:19
Csv, нормально и хдфс в одном предложении - это перебор ):
Нутпопробуй csv функцию юзать как подсказал Евгений

Александр
14.09.2018
23:25:53
я потому на паркет и перепиливаю, но старые поставщики пока на cvs

Евгений
14.09.2018
23:25:54
https://docs.databricks.com/spark/latest/data-sources/read-csv.html

Grigory
14.09.2018
23:25:54
думаю оно само заработает лучше чем сейчас у тебя

Александр
14.09.2018
23:26:44
спасибо, буду завтра палкой тыкать

Евгений
14.09.2018
23:26:53
и вообще про spark sql почитай, забудешь про rdd и про ручной парсинг, как про страшный сон
а потом через два года будешь вспоминать, потому что дефолтный жисон парсер не справился?

Grigory
14.09.2018
23:27:20

Александр
14.09.2018
23:27:22
есть ощушение что таска запилить паркет превратиться в переписать все к чертовой матери

Grigory
14.09.2018
23:27:47

Евгений
14.09.2018
23:27:48
ну rdd не работают с паркетами

Grigory
14.09.2018
23:27:57

Евгений
14.09.2018
23:28:31
ага, rdd.toDF().write.format("parquet")?
и наоборот)

Grigory
14.09.2018
23:28:50
)) можно не использовать спарк апи же

Александр
14.09.2018
23:28:50

Евгений
14.09.2018
23:29:53
все работает
у спарк-контекста нет метода чтения паркета, он есть только у спарк-сессии

Grigory
14.09.2018
23:30:07

Google

Евгений
14.09.2018
23:30:54
ну, всё равно придётся считать в датафрейм, а потом преобразовывать его в rdd

Grigory
14.09.2018
23:31:01
нет

Александр
14.09.2018
23:31:14

Евгений
14.09.2018
23:31:31
Их можно конвертнуть
проще всего воспользоваться датафрейм апи. После чтения файлов на любом этапе можно сделать df.rdd, и продолжить использовать старый код

Grigory
14.09.2018
23:33:12

Евгений
14.09.2018
23:33:16
единственная проблема, что это будет RDD[Row], что конечно же весьма неудобно, и нужно его будет конвертнуть, вытазить оттуда типы

Grigory
14.09.2018
23:33:33
у меня был случай когда дешевле было и эффективнее без спарк скуля все делать
Косяк что напрямую паркет апи и свои инпут форматы считай делать надо

Александр
14.09.2018
23:34:09

Евгений
14.09.2018
23:34:39
если там такой код, то проще переписать)

Александр
14.09.2018
23:34:39
На фоне всего остального

Евгений
14.09.2018
23:36:09
не поделитесь инфой, где такое наследие обнаружили?)

Александр
14.09.2018
23:36:19
Нет, извини.
Не офф место работы даже

Евгений
14.09.2018
23:36:49
без проблем)
ну хоть надежда есть, что что-нибудь поменяется)

Александр
14.09.2018
23:37:39
Ты же знаешь Scala, глянь одним глазом...говорили они, я видел все возможные варианты плохого кода думал я)))
Из плюсов - кода мало и есть приятный чат

Google

Grigory
14.09.2018
23:38:31
Сами глину намесят, а потом ругаются что на спарках плохая скала :/

Александр
14.09.2018
23:41:23
Не ругаются) бизнесс устраивает все
На с++ было медленно, теперь все быстро
Поставщик поменял формат и появилась необходимость потрогать
ну тогда проще некуда
возвращаясб к хорошему доброму вечному =)
паркет же я тоже могу регуляркой всосать ?
ss.read.parquet("hdfs://parquet/*")

Евгений
15.09.2018
16:50:22
Да, конечно
А можно и без звёздочки, просто папку
Или там внутри тоже папки?

Александр
15.09.2018
17:20:01

Евгений
15.09.2018
17:20:41
ну в общем звёздочка должна обозначать набор папок последнего уровня
дайте угадаю, папки типа год/месяц/день?)

Александр
15.09.2018
17:21:55
Ога