我是大数据的初学者,我们正在使用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
到目前为止进展顺利,有点慢一些大董事会。
问题是:我们必须用更大的表迁移视图,这将导致问题,我们认为hive无法承受负载。
对加载此信息有什么建议吗?
注意:我们考虑只复制表然后尝试构造视图的选项,但是视图对表属性进行了复杂的修改和繁重的计算,在impala中创建它在我们的例子中非常复杂。
1条答案
按热度按时间6qftjkof1#
加载非常大的表的模板:使用query而不是带有where子句的表来加载分区+使用split column(尝试找到一些整数均匀分布的列)。并行或顺序运行sqoop以加载不同的分区。理想情况下,如果 predicate 下推将工作在oracle根据您的
where
条款。如果没有,并且oracle端是一个瓶颈,那么使用相同的技术分别加载表:where+split,然后使用额外的配置单元进程具体化视图。