将数据从Oracle提取到Hadoop。Sqoop是个好主意吗
我希望从Oracle数据库中提取一些数据,并将其传输到远程HDFS文件系统。似乎有几种可能的方法可以实现这一点:将数据从Oracle提取到Hadoop。Sqoop是个好主意吗,oracle,hadoop,sqoop2,sqoop,Oracle,Hadoop,Sqoop2,Sqoop,我希望从Oracle数据库中提取一些数据,并将其传输到远程HDFS文件系统。似乎有几种可能的方法可以实现这一点: 使用Sqoop。该工具将提取数据,通过网络将其复制,并将其直接存储到HDFS中 使用SQL读取数据并存储在本地文件系统中。完成后,将数据复制(ftp?)到Hadoop系统 我的问题是,第一种方法(对我来说工作较少)是否会导致Oracle锁定表的时间超过要求 我担心的是,当Sqoop开始查询数据时,它可能会在数据库上打开一个锁,在所有数据都复制到HDFS之前,这个锁不会被释放。由于我将
- Sqoop在OracleBatabase上发出了常见的select查询,它也是这样做的 与select查询相同的锁。没有额外的锁 由Sqoop执行
- 数据将在多个并发任务(映射器)中传输。任何 昂贵的函数调用将给系统带来巨大的性能负担 您的数据库服务器。高级功能可以锁定某些表, 防止Sqoop并行传输数据。这将 对传输性能产生不利影响
- 要实现高效的高级筛选,请在服务器上运行筛选查询 数据库导入之前,将其输出保存到临时表中,然后 运行Sqoop将临时表导入Hadoop,而不使用-where参数
- Sqoop导入与跨网络访问的数据拷贝无关。 Sqoop存储在一个位置,并基于 集群HDFS复制数据