Я работал инженером данных и столкнулся с этой проблемой.
Я столкнулся со случаем использования, когда у меня есть представление (назовем его inputView), которое создается путем чтения данных из какого-то источника.
Теперь где-то позже в конвейере мне нужно снова прочитать данные из СУБД, создать представление (транзакции).
Затем я запускаю SQL-запрос Spark, чтобы объединить представление транзакций с входным представлением на основе некоторого столбца.
Проблема:
Проблема здесь в том, что должны загружаться только те данные, которые требуются от транзакций, но считываются все данные.
Предлагаемое решение (не уверен, что это безопасно)
Чтобы решить эту проблему, мы планируем создать временную таблицу в базе данных и сохранить inputView в RDBMS, затем выполнить соединение на уровне базы данных и получить данные.
Но при таком подходе проблема, похоже, заключается в том, что
1. Временные данные доступны только для каждого сеанса. Исполнители Spark будут иметь отдельный сеанс при вставке данных inputView в базу данных. Итак, как они собираются читать данные после присоединения, поскольку API искровой записи создаст данные записи сеанса, а затем закроет сеанс. Данные исчезнут еще до выполнения запроса на соединение.
2. Если я пишу каждую запись одну за другой из драйвера, используя JDBCprepreStatements. Затем для выполнения соединения и чтения данных мне нужно использовать одно и то же соединение для чтения данных, я не могу использовать API искрового чтения для их чтения. Поэтому я читаю данные только с помощью JDBC, что в конечном итоге загрузит все данные в драйвер, что может вызвать OOM.
3. Предположим, что работает несколько конвейеров и несколько конвейеров пытаются вставить свои данные inputView в некоторую временную таблицу. База данных будет получать большую нагрузку. Не произойдет ли сбой?
Любые предложения/решения приветствуются.
Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/798 ... java-spark
Удаление фильтров в СУБД с помощью Java Spark ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1763700929
Anonymous
Я работал [b]инженером данных[/b] и столкнулся с этой проблемой.
Я столкнулся со случаем использования, когда у меня есть представление (назовем его inputView), которое создается путем чтения данных из какого-то источника.
Теперь где-то позже в конвейере мне нужно снова прочитать данные из СУБД, создать представление (транзакции).
Затем я запускаю SQL-запрос Spark, чтобы объединить представление транзакций с входным представлением на основе некоторого столбца.
[b]Проблема:[/b]
Проблема здесь в том, что должны загружаться только те данные, которые требуются от транзакций, но считываются все данные.
[b]Предлагаемое решение (не уверен, что это безопасно)[/b]
Чтобы решить эту проблему, мы планируем создать временную таблицу в базе данных и сохранить inputView в RDBMS, затем выполнить соединение на уровне базы данных и получить данные.
Но при таком подходе проблема, похоже, заключается в том, что
1. Временные данные доступны только для каждого сеанса. Исполнители Spark будут иметь отдельный сеанс при вставке данных inputView в базу данных. Итак, как они собираются читать данные после присоединения, поскольку API искровой записи создаст данные записи сеанса, а затем закроет сеанс. Данные исчезнут еще до выполнения запроса на соединение.
2. Если я пишу каждую запись одну за другой из драйвера, используя JDBCprepreStatements. Затем для выполнения соединения и чтения данных мне нужно использовать одно и то же соединение для чтения данных, я не могу использовать API искрового чтения для их чтения. Поэтому я читаю данные только с помощью JDBC, что в конечном итоге загрузит все данные в драйвер, что может вызвать OOM.
3. Предположим, что работает несколько конвейеров и несколько конвейеров пытаются вставить свои данные inputView в некоторую временную таблицу. База данных будет получать большую нагрузку. Не произойдет ли сбой?
Любые предложения/решения приветствуются.
Заранее спасибо.
Подробнее здесь: [url]https://stackoverflow.com/questions/79819692/pushing-down-filters-in-rdbms-with-java-spark[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия