Size: a a a

2021 February 13

РГ

Рустам Гилазтдинов... in Data Engineers
Всем привет!
Подскажите, пожалуйста
Имею docker-compose в котором есть jupyter, на базе этого образа и спарк на основе этого
Запускаю ноутбук в jupyter, проверяю работу

import findspark
findspark.init()
import pyspark
sc = pyspark.SparkContext(master = "spark://spark-master:7077", appName='test')

Вижу в Spark UI,  что появилось Running Application, все ок

Дальше запускаю простейший тест

import random

def inside(p):
   x, y = random.random(), random.random()
   return xx + yy < 1

count = sc.parallelize(range(0, 1000000)).filter(inside).count()
print("Pi is roughly %f" % (4.0 * count / 1000000))


И все это падает с ожидаемой ошибкой

java.io.IOException: Cannot run program "/opt/conda/bin/python": error=2, No such file or directory

То есть в жюпитере стоит конда, а в самом спарке она не установлена
Пробовал добавить конду в имадж спарка, свалилось выполнение теста выше совсем с какой-то бредовой ошибкой типа xx is not defined

Как бы полечить? Собрать жюпитер с питоном, как в спарке?
Но там как-то тоже для меня не очевидно все работает
Питон в спарке

-> which python
/opt/bitnami/python/bin/python

-> python --version
Python 3.6.12

Староват, но это ладно. Важнее что путь до самого питона не стандартный, что явно вызовет проблемы
Периодически нагугливается что-то про env'ы, в которых можно поменять версию питона в спарке, но пока не разобрался
Подскажите, как полечить?
По итогу хочется иметь отдельный кластер спарка и отдельный сервис жюпитера, из которого к кластеру можно подключаться и запускать примерно такие же расчеты, как в тесте выше.
источник

РГ

Рустам Гилазтдинов... in Data Engineers
Ссылка на композ, мало ли
источник

KS

K S in Data Engineers
Народ, есть куча паркет файлов в S3 bucket, в которые нужно добавить несколько полей из других паркет файлов по ключу. Пока что видится это всё как lambda + glue pyspark dataframe -> S3. Вопрос: а как быть если файл большой и не помещается в памяти? Можно ли как-то распараллелить чтение паркета, чтобы glue job не вывалилась из-за нехватки памяти?
Дополнение:
В одном случае нужно сохранять как паркет (то есть один к одному), в другом объединять содержимое нескольких бакетов в zip file.
источник

K

KrivdaTheTriewe in Data Engineers
K S
Народ, есть куча паркет файлов в S3 bucket, в которые нужно добавить несколько полей из других паркет файлов по ключу. Пока что видится это всё как lambda + glue pyspark dataframe -> S3. Вопрос: а как быть если файл большой и не помещается в памяти? Можно ли как-то распараллелить чтение паркета, чтобы glue job не вывалилась из-за нехватки памяти?
Дополнение:
В одном случае нужно сохранять как паркет (то есть один к одному), в другом объединять содержимое нескольких бакетов в zip file.
Спарком?
источник

KS

K S in Data Engineers
KrivdaTheTriewe
Спарком?
Ага
источник

KS

K S in Data Engineers
Коллеги из соседней команды решили запускать контейнеры с голанг внутри и обрабатывать эти паркеты параллельно.
источник

K

KrivdaTheTriewe in Data Engineers
K S
Коллеги из соседней команды решили запускать контейнеры с голанг внутри и обрабатывать эти паркеты параллельно.
Но там три строчки написать всю джобу
источник

KS

K S in Data Engineers
KrivdaTheTriewe
Но там три строчки написать всю джобу
Я там немного дополнил вопрос.
источник

KS

K S in Data Engineers
Один к одному действительно три строчки - открыл два файла, лефт джойн по ключу, сохранил.
Но вот когда нужно объединить много потоков для формирования результирующего архива, то здесь вот меня и беспокоит, поместится ли всё это в памяти или есть какие-то хитрости, чтобы писать как то частями.
источник

K

KrivdaTheTriewe in Data Engineers
поместится конечно, если на спарке написать
источник

K

KrivdaTheTriewe in Data Engineers
так как спарк может не целиком загружать в память весь паркет файл
источник

KS

K S in Data Engineers
KrivdaTheTriewe
так как спарк может не целиком загружать в память весь паркет файл
А где-то про это можно почитать?
источник

GP

Grigory Pomadchin in Data Engineers
K S
А где-то про это можно почитать?
пуш даун предикаты
источник
2021 February 14

NN

No Name in Data Engineers
@pomadchin убей их, пожалуйста
источник

GP

Grigory Pomadchin in Data Engineers
No Name
@pomadchin убей их, пожалуйста
+
источник

KS

K S in Data Engineers
Ещё вопрос:
При слиянии данных, как избежать избыточности? Допустим в миллион записей с пятью полями нужно добавить ещё 3 поля, которые для всех записей одинаковые.
Есть ли какие-то структуры данных, которые позволяют определить идентичность кусков записи и хранить их более компактно?
источник

Д

Дмитрий in Data Engineers
Колумнарное хранение ?
источник

A

Alex in Data Engineers
K S
Ещё вопрос:
При слиянии данных, как избежать избыточности? Допустим в миллион записей с пятью полями нужно добавить ещё 3 поля, которые для всех записей одинаковые.
Есть ли какие-то структуры данных, которые позволяют определить идентичность кусков записи и хранить их более компактно?
Паркет и орк умеют в дикшнари енкодинг на столбце
источник

KS

K S in Data Engineers
В BigQuery есть типы array куда можно добавлять записи одного типа, но это вроде только одно значение.
источник

KS

K S in Data Engineers
Alex
Паркет и орк умеют в дикшнари енкодинг на столбце
Мне наверное нужно что-то типа column family.
источник