tag:blogger.com,1999:blog-28414948129021882562024-02-21T18:52:16.611+03:00Скахин Алексей / pihelЛичный блог. Заметки о программировании и не толькоskahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.comBlogger94125tag:blogger.com,1999:blog-2841494812902188256.post-59302219237146560722030-02-04T18:28:00.009+03:002023-09-09T12:21:53.033+03:00Скахин Алексей / pihel Биография:
Родился в Вологде 9 марта 1987 года. В 2009 году окончил ВоГУ по специальности программное обеспечение. Проживаю в Санкт-Петербурге.
В свободное от работы время люблю играть в волейбол и кататься на велосипеде<!-- , целовать миу !-->.
Места работы:
6. Лента: Performance specialist: Sap Abap, Oracle, 2016 - ...
Big Data developer: Azure Databricks, OnPrem Hadoop, Spark, Scala, Hive,skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.comtag:blogger.com,1999:blog-2841494812902188256.post-38464656274081183222023-11-16T22:53:00.003+03:002023-11-16T22:53:38.489+03:00Unit и Integration testing
Unit testing
Требования к коду и тестам
Обеспечение детерминированности функции
Реализация
Python
Scala
Integration testing
Цель
Типы зависимостей
Методика интеграционного теста
Обработка неуправляемых зависимостей
Реализация
Python
Scala
Unit testing
Требования к skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-72966627796041236212023-05-07T14:13:00.002+03:002023-05-07T14:13:42.488+03:00Памятка по Docker и Kuber
Docker
Docker - команды
Создание Dockerfile
Kuber
Установка minikube
Создание pod из файла
Команды
Передача данных в pod
Helm
Скалирование от нагрузки
Docker
Docker - команды
Установка
sudo apt install docker.io
sudo chmod 666 /var/run/docker.sock
список образов (классов):
docker images
списокskahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-3716803384968832582023-05-07T10:12:00.001+03:002023-05-07T10:12:12.629+03:00Памятка по Python
Сравнение объектов
Итерирование объектов
Добавление и извелечение
Интерполяция и подстановка
Коллекции
Параметры функций
Lambda функции
Импорт модулей
Классы
Декораторы
Функции высшего порядка
With - менеджер контекста
Виртуальное окружение
Популярные библиотеки
Сравнение объектов
== - сравнивает содержимое
is - сравнивает указатель на объект
аналог between в sql:
>>> 0 <= a <skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-22505969965544929102022-01-22T22:58:00.003+03:002022-01-22T23:00:34.672+03:00Удаленный запуск SAP DS job используя Python
pre b {
background-color: #ffff99;
}
В этой статье расскажу как встроить инструмент SAP DS в потоки Airflow.
Если у вас в компании много SAP, но не хватило денег на Hana Enterprise, то единственный способ копирования данных во вне - это использовать SAP DS через сервера приложений SAP.
Минусы этой схемы - это старый, неудобный инструмент и что запуски DS нельзя встроить в потоки Airflow.
skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-55316072898412474942022-01-13T17:09:00.006+03:002022-01-13T17:17:08.858+03:00Книга: Высоконагруженные приложения. Программирование, масштабирование, поддержкаЭто не пересказ всей книги, а краткие заметки, особо запомнившихся разделов.
Подсистемы хранения и извлечение данных
Кодирование данных
Thrift BinaryProtocol
Thrift CompactProtocol и Protocol Buffers
Avro
Отличие Avro от Thrift CompactProtocol и Protocol Buffers
ORC
Репликация
Шардированиеskahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-19969243921026200802021-07-28T18:49:00.006+03:002021-07-29T09:48:16.012+03:00Azure: Databricks vs HDInsight
pre b {
background-color: #ffff99;
}
.art table {
width: 100%;
}
.art table pre {
white-space: normal;
}
.art table, .art tr, .art td, .art th {
margin: 0px;
padding: 0px;
border-collapse: collapse;
outline: none;
vertical-align: top;
}
.art td {
border: 1px solid #eee;
padding: 5px;
}
.art table .best {
background-color: #ffff99;
}
.art table .hd {
skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-13028780877161899672021-01-05T11:54:00.002+03:002021-01-05T11:58:48.768+03:00Оптимизация Spark Scala UDF
Проблемы Scala UDF
Создание Native Scala UDF для Catalyst
Использование
Тестовые данные
Сравнение планов, Codegen и производительности
Агрегация чисел
Фильтрация по числовому столбцу
Агрегация строк
Использование в SQL
Проблемы Scala UDF
1. UDF - черный ящик для Codegen: представляет из себя вызов java функции и не встраивается в wholestagegen
2. Нет skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-23925784059898195012020-11-12T21:03:00.006+03:002020-11-12T21:35:24.143+03:00Графовые базы: особенности хранения данных
pre b {
background-color: #ffff99;
}
.art {overflow-x: auto;}
.art table {
width: 100%;
}
.art table, .art tr, .art td, .art th {
margin: 0px;
padding: 0px;
border-collapse: collapse;
outline: none;
vertical-align: top;
}
.art td {
border: 1px solid #eee;
padding: 5px;
}
.art table .best {
background-color: #ffff99;
}
.art table .hd {
background-color: #eeeeee;
skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-10355745103151054412020-08-21T09:36:00.018+03:002023-08-18T11:23:21.533+03:00BigData анализ с помощью Spark и ScalaВ этой статье я хотел бы охватить основные аспекты работы с фреймворком Spark
RDD
RDD Key-Value
DataFrame и Spark SQL
DataSet
Управление распределением данных
Shuffle
Дополнительные возможности
Spark Streaming
Настройка и отладка
Оптимизация
Общее описание архитектуры Spark было ранее тут: /search/label/bigdata#spark
RDD
Виды операций
- narrow (skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com1tag:blogger.com,1999:blog-2841494812902188256.post-89541672606149073332020-08-17T11:03:00.005+03:002020-08-18T22:38:24.310+03:00SAP ABAP: анализ производительности
Транзакции для анализа производительности
Буферизация таблиц
Популярные проблемы в abap коде
Обращение к внутренней таблице без ключа
Повторяющиеся запросы
Запросы в цикле
Abap хинты
Транзакции для анализа производительности
ST04 - различная информация о базе данных
Самые популярные пункты в st04:
* skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com2tag:blogger.com,1999:blog-2841494812902188256.post-49096795823531305462020-06-08T17:24:00.003+03:002020-08-18T22:40:28.927+03:00Отчеты Oracle Sql Developer для анализа запросовУ каждого, кто работает с Бд Oracle есть набор любимых запросов для ее диагностики.
В этой статье хотел бы описать мои, которые запускаются из Oracle Sql developer.
Выгрузка всех отчетов находится по ссылке github
Для работы необходимо наличие лицензии "Diagnostic and Tuning Pack"
Полный список всех отчетов можно видеть на картинке слева.
Большинство из них вспомогательные и нужны для skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-84001299872932356752020-05-14T17:59:00.002+03:002020-05-14T18:08:03.907+03:00Oracle 20: новые возможности для разработчикаСписок нововведений в Oracle DB 20, важных, по моему мнению, для разработчика.
Oracle 20
Oracle 19
Oracle 18
Oracle 12
SQL макросы
Текст макроса подставляется в результирующий запрос.
Можно рассматривать как параметризованную вью
CREATE FUNCTION budget(job VARCHAR2, t DBMS_TF.table_t) RETURN VARCHAR2 SQL_MACRO IS
BEGIN
RETURN q'{SELECT deptno, SUM(sal) budget
skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-78958062014193536142020-03-27T10:31:00.002+03:002020-03-27T10:31:31.101+03:00Oracle DataMiner ML в сравнении с Python sklearn
pre, code {
padding: 3px;
background-color: #eeeeee;
border: 1px solid #dddddd;
margin: 0px 5px 5px 5px;
/* Перенос строки */
white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;
}
.art table {
width: 100%;
}
.art table, .art tr, .art td, .art th {
margin: 0px;
padding: 0px;
border-collapse: collapse;
outline: none;skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-17346729809580498222020-03-08T18:14:00.002+03:002020-03-08T18:14:48.845+03:00Нейронные сети и компьютерное зрениеЭто краткий пересказ курса Нейронные сети и компьютерное зрение.
В этой заметке больше внимания будет уделено практической части. Теорию можно почитать в предыдщей статье "Введение в нейронные сети".
Код практической части на гитхабе курса.
Библиотека PyTorch
Задачи, решаемые при помощи нейронных сетей
Методы оптимизации скорости обучения
Сверточные нейронные сети
skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-4894147944921133882020-02-26T23:27:00.003+03:002020-02-29T18:36:16.674+03:00Подключение к Kafka через Spark Structure StreamingПамятка по чтению данных из Kafka топика средствами Spark Structure Streaming
Подключение к Kafka
Описание схемы топика
Системные данные
Преобразование json в плоскую таблицу
Запуск стрима
Указание окна забора
Запуск batch процессинга
События на стрим
Запуск из консоли
Использование стрима в HiveQL
Подключение к Kafka
val df = spark
.readStream
.skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-39000997979496783212020-01-25T12:28:00.005+03:002020-11-24T23:05:18.024+03:00SQL заметки за 2019Продолжение цикла заметок и статьи 2016 года.
Хочу зафиксировать моменты Oracle и SQL в общем, которые достаточно интересны, но малы для отдельной статьи.
Трансформация запросов
Виды преобразований запросов
Результрующий запрос после всех преобразований оптимизатора
Ручная трансформаиця 1 запроса в другой
skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-51804075127452473252019-11-21T19:10:00.002+03:002020-08-18T22:38:47.933+03:00Настройка и мониторинг производительности Java приложений
table pre {
/*white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;*/
max-width: 640px;
}
pre b {
background-color: #ffff99;
}
.art table {
width: 100%;
}
.art table, .art tr, .art td, .art th {
margin: 0px;
padding: 0px;
border-collapse: collapse;
outline: none;
vertical-align: top;
}
.art td {
border: skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-16577279911659775652019-08-19T23:39:00.018+03:002022-01-19T09:23:38.741+03:00Оптимизация хранения данных в Orc для Hive
ORC: формат файла
Параметры по умолчанию
Максимальная доля уникальных значений для создания справочника
Количество строк в stride
Партицирование
Кластеризация
Время вставки
Select по ключу кластеризации
Отличие Hive кластеризации от Spark
Сортировка
Размер данных
Время вставки
skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com5tag:blogger.com,1999:blog-2841494812902188256.post-10895131117824796302019-06-30T22:50:00.001+03:002019-06-30T23:17:26.817+03:00Машинное обучение через решающие деревьяЭто краткий пересказ курса: Введение в Data Science и машинное обучение с дополнением 2 тем: градиентный бустинг и решающие деревья в Spark.
Пред подготовка данных на Python
Решающие деревья
Тренировочная и тестовая выборка
Дополнительные параметры оценки качества дерева
Автоматический подбор оптимального дерева
Случайный лес
skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com2tag:blogger.com,1999:blog-2841494812902188256.post-71189229877020529502019-05-18T10:45:00.000+03:002020-05-14T18:02:08.379+03:00Oracle 18-19: новые возможности для разработчикаСписок нововведений в Oracle DB, важных, по моему мнению, для разработчика.
Oracle 20
Oracle 19
Oracle 18
Oracle 12
Oracle 19
DISTINCT Option for LISTAGG Aggregate
Опция DISTINCT теперь доступна для аналитической функции LISTAGG. Больше не нужно делать свою агрегатную функцию
Generation of Unique Sequence Numbers Across Shards
Возможность создание единой skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-91334727074091926342019-03-10T23:18:00.002+03:002019-03-10T23:18:49.145+03:00Шаблон проектирования в Scala
Порождающие шаблоны (Creational)
Строитель (Builder)
Фабричный метод ( Factory )
Отложенная инициализация (Lazy)
Прототип ( Prototype )
Одиночка (Singleton)
Структурные шаблоны (Structural)
Адаптер ( Adapter )
Мост (Bridge)
Декоратор (Decorator)
Фасад (Facade)
Заместитель (Proxy)
Поведенческие шаблоны (Behavioral)
Цепочка skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-62242159262954614802019-02-18T00:06:00.000+03:002019-02-18T00:18:05.040+03:00RBTree - красно-черное деревоКрасно-чёрное дерево (Red-black tree, RB-Tree) — самобалансирующееся двоичное дерево поиска, гарантирующих логарифмический рост высоты от числа узлов.
Дополнительные требования к двоичному дереву:
1. Узел либо красный, либо чёрный
2. Корень — чёрный
3. Все листья (NIL) — чёрные (листья не содержат данных)
4. Оба потомка каждого красного узла — чёрные.
5. Всякий простой путь от данного узла до skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0tag:blogger.com,1999:blog-2841494812902188256.post-43234396751189305782018-11-29T19:50:00.010+03:002023-05-10T12:58:46.936+03:00Введение в Scala и параллельную разработкуВ этой статье я хотел бы охватить все аспекты работы с данными на языке Scala - от примитивов языка до параллельного программирования.
Введение в Scala
Переменные
Операторы
Условия
Вывод в консоль
Циклы
Функции
Процедуры
Ленивые переменные
Исключения
Массивы
Ассоциативные массивы
Кортежи (tuples)
Классы
Объекты
Пакеты и импортирование
skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com1tag:blogger.com,1999:blog-2841494812902188256.post-64319508368794731392018-06-28T18:26:00.000+03:002020-03-07T19:18:10.591+03:00Введение в нейронные сетиЭта статья-заметка освещает основные понятия нейронных сетей и как их строить применяя python.
Основное понятие нейронных сетей - регрессия.
Линейная регрессия - предсказание количественной зависимости одного показателя от другого
Простейшим представителем нейронных сетей - является перцептрон, который описывает 1 нейрон
Перцептрон можно описать формулой:
Где
* X - входные активации (skahinhttp://www.blogger.com/profile/03348517219987663555noreply@blogger.com0