使用Sqoop将视图(数据库表重)从Oracle迁移到Hive

时间:2017-05-24 10:42:29

标签: hive sqoop bigdata

我是Big Data的初学者,我们正在使用sqoop将视图从Oracle迁移到Hive,并使用Cloudera管理,我们正在使用的命令示例:

sqoop import -D mapred.child.java.opts="\-Djava.security.egd=file:/my_url" \ 
  -D mapreduce.map.memory.mb=9192 -D mapreduce.map.java.opts=-Xmx4096m \
  --connect jdbc:oracle:thin:@//my_url --username "my_user" \
  --password "my_password" --table my_view_name --compress \
  --compression-codec=snappy --as-parquetfile \
  --create-hive-table --hive-database my_db_name \
  --hive-table our_table_anme --hive-import \
  -m 8 --hive-overwrite \
  --map-column-java column_name=String,column_name=String,column_name=String,column_name=Float --split-by cloumn_name

到目前为止它进展顺利,有些大板有点慢。

问题:我们必须使用更大的表来迁移视图,这会导致问题,我们认为配置单元无法承受负载。

有关加载此信息的任何建议吗?

注意:我们考虑只复制表然后尝试构造视图的选项,但是视图对表属性和繁重的计算进行了复杂的修改,在impala中创建它是非常复杂的。

1 个答案:

答案 0 :(得分:0)

用于加载非常大的表的模板:使用查询而不是表与 where子句加载分区 +使用split-column(尝试查找一些整数均匀分布的列)。并行或顺序运行sqoop以加载不同的分区。理想情况下,如果谓词下推根据您的where子句在Oracle中有效。如果没有,并且Oracle方面是一个瓶颈,那么使用相同的技术单独加载表:where + split,然后使用其他Hive进程实现您的视图。