栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

用Sqoop从oracle导出到Hive中的ORC table

用Sqoop从oracle导出到Hive中的ORC table

之前尝试的都是用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,注释掉一些语句,这里请自行网上查询不再细说。

运行成功如图:

运行脚本如下:

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

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/663512.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号