Задать вопрос
  • Как перехватить исключение pyo3_runtime.PanicException при использовании pandas и calamine?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если сторонняя библиотека крашит python процесс то вам просто надо запускать
    еще один процесс-камикадзе (excel-kamikadze.py), который даже если падает - не оказывает влияние на основной.
    Эта техника используется часто в акторах Erlang/OTP.

    Как получить данные назад из excel-kamikadze.py. Тут - много вариантов. Можно создавать временный
    файл (XML/JSON куда передавать нужные результаты парсинга). Можно выдать их в поток STDOUT.

    import subprocess
    
    result = subprocess.run(["/usr/bin/python3", "kamikadze.py"], stdout=subprocess.PIPE) 
    output = result.stdout.decode("utf-8")
    Ответ написан
    Комментировать
  • Регулярное выражения для поиска информации?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В Apache Spark обычно нет таблиц. Дата-инженер оперирует абстракциями
    - RDD
    - DataFrame
    - DataSet (почти тоже самое что датафрейм)


    Когда у тебя в одной руке датафрейм - ты можешь уже к нему применить фильтр с регуляркой тип

    df.filter(col("name").rlike("(?i)^*rose$")).show()

    Если сильно хочется - то поверх датафрейма создается View через

    df.createOrReplace......View("view_name")

    И с ним работают.

    spark.sql("SELECT .... WHERE col RLIKE ..... ").show()


    Но это уже такой себе овер-инжинеринг. И если можно решить задачу на уровне датафреймов
    то обычно так и решают. SQL и прочее подключают когда есть JOINS или какие-то особые условия
    (catalyst optimizer нужен).
    Ответ написан
  • Возможно ли создать универсальное решение для процесса синхронизации данных от разных поставщиков?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если кратко - то да. Можно.

    Если более подробно - то это долго. Мучительно. И где то в конце вы создадите свой собственный
    язык (DSL)
    который будет описывать все бизнес-преобразования данных.

    Общая идея такая. Вы пишете одинаковый софт на Python для всех поставщиков данных а различия
    реализуете как часть конфигураций. Пример (совершенно выдуманный):

    datasources:
      - datasource: Bitcoin
        format: xls
        header: on
      - datasource: Market
        format: csv
        header: off
    
    transformations:
      - name : Bitcoin
        filter: "WHERE payload is not null"
    
    sink:
      - name : Bitcoin
        dest: jdbc:thin:oracle@....

    Существует разумный баланс между DSL и частным решением для каждого провайдера
    данных. Например с точки зрения передачи знаний для новых разработчиков решение
    на DSL всегда плохое. По личному опыту коллегам всегда не нравится то, что вам кажется
    красивым и концептуальным. И чаще всего DSL языки тихо умирают с уходом с проекта
    главного создателя и идеолога этих всех DSL.

    В качестве основы для DSL не обязательно нужен Yaml. Это можно делать на Python, Lua, Lisp
    и вообще даже на основном языке. Главное чтобы конфигурационная часть была декларативной
    и не содержала циклов и проверок условий.
    Ответ написан
    1 комментарий
  • Как сделать нечёткую кластеризацию текстов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе нужно во первых поставить задачу в терминологии векторов (VectorDb, spark.mlib, pandas).
    По сути надо сделать top 3 максимально близких жанровых вектора к текстовому описанию игры.
    SELECT 
     distance(v_genre, v_game) as dist, genre, game 
    FROM
     genres, games
    .....
     (select top 3 by dist for each game)
    Ответ написан
    Комментировать
  • Хостинг не до конца выполнил услуги, файлы потеряны, кто виноват?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я думаю что нет смысла ходить в суды. Суд будет смотреть в то что написано в договоре. А там про
    бэкапы скорее всего будет написано в общих словах. И если ты в течение месяца ни разу не сделал
    backup то ты - плохой поросёнок. На будущее - всегда делай backup. Делай backup когда дела идут хорошо.
    И у тебя не будет ситуации когда надо срочно-срочно.
    Ответ написан
    6 комментариев
  • Как создать хранилище с raid 1?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Raid в домашних условиях никому не нужен. Просто не летает эта тема.
    Купи обычный USB 3.0 portable drive в резиновом корпусе. А лучше два. И пиши бэкапы
    туда в шахматном порядке.
    Ответ написан
  • Как составить список уникальных комплексных решений для уравнения? Как понять что число 0.999999 то же что 1.0000001?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно методом Монте-Карло перебирать все случайные решения на всей области определения.
    Потом - делать квантизацию (так чтобы такое значение 0.99999 равнялось такому 1.000001)
    и квантизованные пары (ключи) складывать в какую-то хеш-табличку с подсчетом.
    Триллион итераций ждать не будем. Может быть где-то через тысяч сто у нас будет
    гистограмма. И бери из нее top 10 значений. Это и будут твои 10 уникальных.
    Ответ написан
    1 комментарий
  • Как "склеить" два файла?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Самый простой вариант - редактирование сегмента данных не трогая код. Забиваешь
    нулями дополнительный резерв места в строке.

    section .data
        error_message db "Hello byte, hello word", 0, 0,0,0,0,0,0,0,0,0,0,0,0


    Потом в hex редакторе просто передвигаешь слово вправо не забывая что ASCIIZ строка обязательно
    должна закончистя нулем.
    Ответ написан
  • Имеет ли смысл добавлять первичный ключ в таблицу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть два важных смысла в ПК. Первое - это реляционная алгебра. Про это написанно миллиард
    книжек и все преподаватели тебя зачморят если в таблице нет ПК и foreign key constraint не будет
    работать.

    Второе. Если ты создаешь например CREATE TABLE .... (.... PRIMARY KEY..); то бесплатно
    бонусом получаешь создание индекса
    по полям где есть ПК и соответсвтенно поиск по ПК
    будет идти очень быстро и не будет дубликатов.

    Но в современном мире понятие "данные" стало очень широким и в базах очень часто лежат
    таблицы без ПК. Это staging table (куда идет загрузка из внешних источников), логи и отчеты.
    И аналитические представления. В области bigdata данные часто лежат в файлах (parquet, orc, delta)
    и там вообще ПК нету. И ничего. Работает.
    Ответ написан
    Комментировать
  • Функция проходит по циклу, но не суммирует значения почему?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Во первых этот огрызок кода не компилируется. Ты уж постарайся публиковать самодостаточный код.
    Чтоб читатели могли собрать его и проверить самые базовые ошибки.

    Во вторых сумма

    res[i] = res[i] + #IN_STM_SUMM[j].doubleValue();

    будет зависить от нескольких проверок условий которые выше по коду не срабатывают. Разберись
    почему эти проверки не сработали и будет тебе ответ.
    Ответ написан
    Комментировать
  • Каждые 10 сек. сайт должен получать цены с 11 бирж, но этих бирж станет больше, как распределять нагрузку?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мысли.

    1) У тебя есть требование периода 10 секунд. Но нет требования синфазности. Тоесть можешь
    получать цены со сдвигом примерно в 10/11 секунды.

    00:00:00.00 - Market 01
    00:00:00.90 - Market 02
    00:00:01.80 - Market 03


    2) Вряд-ли все биржи будут поддерживать одинаковый сетевой протокол и одинаковый план обновления.
    Рассмотри вариант MQ если таковой будет. Подпишись на события.
    Ответ написан
    Комментировать
  • Как можно максимально уменьшить размер данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Несколько мыслей.
    - sqlite - это не база для BigData.
    - в клипе не будет смысла. А для сравнения картинок - поищи что такое perceptual hash. Статья была гдето.
    Ответ написан
  • Почему компьютеры не используют двоично-десятичный формат для вычислений?

    mayton2019
    @mayton2019
    Bigdata Engineer
    BCD использовалась для старых ЭВМ (16 бит) в тех случаях когда нужно было делать
    финансовые расчеты.

    Могу предположить, что для финансовой арифметики, возможности современных
    CPU в части SSE/AVX перекрыли все подобные задачи. И работают они быстрее чем BCD.

    В целом, эта (BCD) арифметика сегодня живет в бухгалтерских калькуляторах типа Sharp/Citizen.

    Погрешности при делении AVX512 и BCD можно обсудить отдельно, но это нужно иметь какие-то
    требования. Чтоб не просто так с потолка сравнивать.
    Ответ написан
    Комментировать
  • Как написать прикладной протокол?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе на самом деле нет смысла строить протокол поверх TCP.
    Не будет никакого сильного преимущества. HTTP достаточно
    удобен
    чтобы гонять запрос-ответ.

    И тогда можешь описать свой протокол как надмножество REST/SOAP/GraphQL и прочее.
    Ответ написан
  • Как переорганизовать базу данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне нужно её перестроить. Думаю объединить таблицы с одинаковыми параметрами
    в одну таблицу, добавив флаг для их различия. Но что можно было бы сделать ещё?

    Так не делается. Никто не создает технические задания с основанием "что-бы сделать еще".

    Оставь таблицы как есть. Но если у тебя есть дата и время как тип данных то замени text на date/time.
    Это будет честно по отношению к семантике хранимой информации.
    Ответ написан
    Комментировать
  • Можно ли использовать кириллицу в Active Directory?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Кириллица или прочая кодировка - это не проблема Active Directory скорее всего.
    Но это может быть проблемой для того программного обеспечения которое
    использует AD как LDAP сервис, получая из него свои сведенья.

    Надо тестировать весь софт который в организации взаимодействует с AD.
    Ответ написан
    Комментировать
  • Почему не выводит результат кода на рекурсию для ЕГЭ 16 задания?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Данная формула
    f(2024) + f(2023)) / f(2022))
    написана правильно (as is) но является как-бы троллингом вычислительной системы.

    В числителе и знаменателе считаются факториалы чисел с разрядностью больше чем RSA ключи.
    От десятки и выше каждый множитель добавляет 2 десятичных знака к проивзедению и в конце
    где вы ведете учет последних множителей идут 2000*2001*2002 и так далее. Каждое умножение
    добавляет 3 нуля. Миллионы-миллиарды-триллионы и так далее.

    Rsa97 пишет про это в комментарии. Собственно он и ответил на вопрос как это считать. Сократив
    ненужные вычисления.

    Python-у очень тяжело считать такие числа. Это - как майнинг. И самое смешное что математически,
    формула очень сильно упрощается если по закону сокращения дробей.
    Ответ написан
    Комментировать
  • Возможно ли математически поставить под сомнение принцип случайности при раздаче карт в дураке на телефоне?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Самое сложное что в этой задачае - это сбор датасета. Тебе нужно аккуратно записывать
    сколько людей играет. И кто сдает какие карты. И после того как ты соберешь хотя-б несколько
    сотен сеансов игр, можно будет гонять всякие анализы по этому датасету и искать зависимости.

    Без этих данных - очень сложно строить гипотезы.
    Ответ написан
    Комментировать
  • Pandas умеет чертить границы ячеек в Excel?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Посмотрите библиотеку https://pypi.org/project/openpyxl/
    Ответ написан
    Комментировать
  • С чего начать создание сервиса бронирования на java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    99% успеха зависит от того имеешь ли ты вообще опыт разработки веб-приложений во взаимодействии с БД
    например. Какой-либо методички по бронированию не существует. Потому-что все подобные задачи
    по своему уникальны и бизнес как раз хочет иметь всегда решение не похожее на конкурента.
    Поэтому и шаблоны таких решений не очень полезны.
    Ответ написан
    Комментировать