Задать вопрос
  • Как запретить интансам получать данные из одной и той же партиции?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Твоя задача может быть решена конфигурацией consumers вот как тут пишут https://www.baeldung.com/kafka-send-data-partition

    Но мне кажется что тебе выгоднее решать такое разделением на топики а не на партишены.
    Партишены - все таки больше для affinity, баланса нагрузки чем для разделения на бизнес-кейсы.
    Ответ написан
    2 комментария
  • Как найти фантомный бинарник Caddy, который мне не нужен?

    mayton2019
    @mayton2019
    Bigdata Engineer
    У меня lsof показывает среди прочих файлов и сам бинарник

    $ lsof -p PID
    Ответ написан
    Комментировать
  • Как сделать запрос на поиск 6 значений в одной таблице и 1 значения в другой, имеется не оптимизированный запрос с ILIKE?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Непонятно зачем ты конструируешь ILIKE когда у тебя идет поиск цифр и нет
    case-insensitive алгоритмов. Упрости, чтоб было системе проще.

    Про триграммы тут уже напихали. Нечего добавить.

    Есть идея попробовать следующее. Можно конкатенировать все искомые поля в одно большое
    виртуальное поле и построить по нему реальный триграммный индекс. Здесь мы сэкономим на количестве.
    Вместо 5 индексов сделаем один и результат будет тот-же самый. Нам по сути безразлично
    в каком поле найдена строка. Важно что просто была дизьюнкция предикатов.

    CREATE TABLE messages(
        .......
        all_fields text GENERATED ALWAYS AS (CONCAT(sender,' ',message,' ',receiver,' ',sim))
    );
    
    CREATE EXTENSION IF NOT EXISTS pg_trgm;
    
    CREATE INDEX messages_tr_idx ON messages USING GIN (all_fields gin_trgm_ops);


    Точно так-же поступить с табличкой user_apps.

    По поводу этого ограничителя.

    ....
    order by "messageId" desc 
    limit 51 offset 0

    Судя по всему - это дизайн запроса для показа на UI. Обычно так делают чтобы
    показать на формочке веба или в приложении.

    Limit и order - это плохая комбинация. Если смысл сортировки по messageId - это показать
    последние (оперативные) сообщения то я-бы заменил это на поиск по партишену сегодняшнего
    дня
    (или опер-дня) если можно так сказать.

    Разделение данных на оперативные и исторические ускорит поиск многократно. И если
    допустии опер-день занимает 500 тыс строк а исторические данные - 13 млн. То вы
    сразу получаете вместо 80 секунд ускорение ... эээ в сколько раз? 500 000/13 000 000 = x/80
    это будет примерно 3 секунды. Вот. Это если предполагать линейную зависимость от объема.
    Ответ написан
    Комментировать
  • Нынешние реалии стандарта Java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Каковы нынешние реалии стандарта языка? Используются ли в каких-то моментах фишки новых версий (если это вообще возможно)? Ибо судя по всем статьям, практически большинство до сих пор сидит на восьмёрке.

    Да. Это отчасти правда. Основные заказчики Java разработки - это банки. А они не любят миграции версий
    без какой-то особой причины. Я работал с тремя банками и я могу сказать что большая часть кода - это
    легаси. И совершенно нет никакой надежды что будет bump версии языка. Product owner-ы в таком случае
    задают вопрос - "а что мы с этого будем иметь". И обычно для банка - ничего особенного. В некоторых
    случаях (использование CORBA или JAXb, com.sun.*) повышение версии чревато проблемами. Что-то
    может резко отвалиться в новой версии.

    Самые интересные новшества после JDK8 с моей точки зрения были не в языке а в других слоях JRE/JDK (GC, FFI, vectorization, unmanaged memory). Но вы еще попробуйте эти новшества продать бизнесу. Успехов вобщем.
    На какой версии лучше всего практиковаться в написании кода, да и обучаться в целом?

    Да. Ты можешь брать самую последнюю LTS-версию. Брать preview нет никакого смысла. Очень
    сомнительно что для учебы тебе кто-то даст в туториалах экспериментальные фичи. Скорее наоборот.

    Есть ли вообще предпосылки на переход большей части энтерпрайза в ближайшем будущем (ближе к 2030) на более современную версию? Почему тезис о дорогом переходе не нивелируется тем, что за 10 лет со времён восьмёрки завезли достаточно "контента", например, новый синт.сахар и обновленный GC?

    Никакого глобального перехода на самом деле нет. Потому что нет такой проблемы.
    По сути проблемой например для Java 21 может стать "end of extended support" а он условно отмечен
    например на 2031 год. Вы еще попробуйте доживите до этого года и попробуйте сидеть на одном проекте
    столько лет.

    Java может стать COBOL-ом XXI столетия. Но у нее будет даже меньше проблем чем у Кобола, потому что
    байткод и стек-машина имеет больший потенциал. Тоесть пока жива концепция байт-кода и пока существуют
    процессоры Фон-Нейман архитектуры, можно сказать что Java неубиваема.

    Вообще не стоит вам сильно циклиться только на языке. Параллельно существуют Scala, Kotlin, Groovy, Clojure
    и их само существование делает много альтернатив. Одна JVM - бесконечное число языков.
    Ответ написан
    3 комментария
  • Через какую программу перевести текст цветной с таблицами в электронный вид (Книга Английского Соловов В.Н)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    То что в таблицах - не надо переводить. Перевод будет безсмысленным т.к. речь идет о
    тех формах английского, которые без контекста не существуют или не существуют в других
    языках. Это shall/will, will have to.

    Просто выучи как есть.
    Ответ написан
    Комментировать
  • Увидит ли сисадмин, чем я занимаюсь, если подключиться через Anydesk?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Корпоративный ПК полностью принадлежит корпорации. И все что вы там делаете - фотографируется,
    кей-логгируется и снифферится. И потом хранится в BigData.

    Я советую вам не играть в кошки-мышки с безопасником. Вы все равно проиграете.

    Используйте личный ноутбук для личных дел. И лучше выходить в коридор корпорации или на улицу
    чтобы не было к вам лишних вопросов.
    Ответ написан
    Комментировать
  • Как перехватить исключение 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 можно обсудить отдельно, но это нужно иметь какие-то
    требования. Чтоб не просто так с потолка сравнивать.
    Ответ написан
    Комментировать