当前位置:   article > 正文

用Sqoop从oracle导出到Hive中的ORC table_sqoop抽取oracle数据到hive

sqoop抽取oracle数据到hive

之前尝试的都是用sqoop导出到hive中的hdfs里,作为外部表。再到hive里建内部表,关联上外部表。

这次尝试直接用sqoop将oracle数据(千万量级)导出到hive中的内部表里。

全程不需要手动建表,方法如下:

1. 利用cx_Oracle程序从oracle里读取表格的前几行数据,读成pandas dataframe。

2. 利用pyspark程序从oracle里用spark.read.jdbc读取原始表,返回值为pyspark dataframe。

3. 利用pyspark的schema和pandas的几行dataframe,组合成一个只有几行的新的pyspark的dataframe,这样做的好处是避免step2中读出来的大表,需要很长时间才能加载进内容中。

4. 将Step3中的小小pyspark dataframe,写入到hive中,指定格式为ORC:

pydf.write.option('orc.compress', 'snappy').mode('overwrite').saveAsTable(tbl_name, format='hive')

5. 到hadoop-master中,编写sqoop脚本抽取数据。从Sqoop 1.4.4开始,Sqoop集成了HCatalog,可以支持导入为ORC格式的表格。但是需要配置HCAT_HOME的环境变量,本人是在容器中操作,所以环境变量为:

export HCAT_HOME=/usr/local/hive/hcatalog

先验证一下sqoop,运行sqoop-version,如果弹出很多报警信息,需要修改/usr/local/sqoop/bin/configure-sqoop,注释掉一些语句,这里请自行网上查询不再细说。

运行成功如图:

运行脚本如下:

每次运行之前先清理一下表。否则会追加。 

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号