Имам огромно количество данни в една таблица (~7 милиарда реда) в инстанция на AWS Oracle RDS. Крайният резултат е, че искам тази таблица като стойности, разделени с тръба, съхранени в S3, така че да мога да я прочета в EMR. Това е основно еднократно нещо, така че имам нужда да работи точно и без да се налага да стартирам отново цялото качване, защото нещо е изтекло; Не ме интересува как работи или колко трудно/досадно е да се настрои. Имам root достъп до кутията на Oracle. Разгледах Data Pipelines, но изглежда, че поддържат само MySQL и трябва да го накарам да работи с Oracle. Освен това нямам достатъчно място на твърдия диск, за да изхвърля цялата таблица в CSV на екземпляра на Oracle и след това да я кача. Как мога да направя това?
Как да преместите много данни от инстанция на AWS Oracle RDS към S3?
Отговори (2)
Можете да използвате Sqoop (http://sqoop.apache.org/), за да направите това. Можете да напишете sqoop скрипт, който може да бъде планиран като „EMR дейност“ под Data Pipeline.
Sqoop използва Hadoop и може да отваря множество връзки към Oracle и да зарежда.
Можете да съхранявате необработените си данни на S3 и директно да ги четете на EMR. Или можете да изберете да копирате това в EMR, като използвате дейността „S3Distcp“ (отново планирано в Data Pipeline, ако желаете).
Ако нямате нужда от планиране, можете да завъртите EMR клъстер с помощта на EMR конзола - и да стартирате Sqoop върху това.
Можете да използвате Python/boto, за да направите същото в по-малък мащаб. Копирането на 7 милиарда записа ще ви отнеме "само" 8 дни, като използвате една нишка. Можете да създадете опашка от 100 нишки и паралелно да обработвате дялове на Oracle таблица. Може да не е производствено решение, но работи за моите ad hoc работни места.
Разгледайте го Oracle_To_S3_Data_Uploader