承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601

sqoop读取postgresql数据库表格导入到hdfs中的实现

管理员 2023-07-07 08:03:10 互联网圈 4 ℃ 0 评论 3614字 收藏

最近再学习spark streaming做实时计算这方面内容,进程中需要从后台数据库导出数据到hdfs中,经过调研发现需要使用sqoop进行操作,本次操作环境是Linux下。

首先确保环境安装了Hadoop和sqoop,安装只需要下载 ,解压 和配置环境变量,这里不多说了,网上教程很多。

一、配置sqoop和验证会不会成功

切换到配置文件下:cd $SQOOP_HOME/conf

创建配置环境文件: cp sqoop-env-template.sh sqoop-env.sh

修改配置文件:conf/vi sqoop-env.sh:修改内容以下

配置完成后,履行命令sqoop-version ,检查会不会成功,如图显示sqoop 1.4.7即成功。

二、添加postgresql驱动jar包

由于这里使用sqoop读取postgresql的数据,所以需要将数据库驱动包放到$SQOOP_HOME/lib 下便可 。

三、导入pg数据库中表到hdfs中

1、首先要启动Hadoop集群,不然会报错

履行语句 $HADOOP_HOME/sbin/./start-all.sh

2、履行sqoop语句进行数据导入到hdfs

sqoop import \
–connect jdbc:postgresql:localhost:5432/test(数据库的名称)
–username postgres (填自己的数据库用户名)
–password 888888 (填自己数据库的密码)
–table company (自己创建表的名称)
–m 1 (mapreduce的个数)

履行结果如图:

3、检查hdfs上会不会成功存储到表数据

$HADOOP_HOME/bin hdfs dfs -cat /sqoop/part-m-00000(数据目录改成自己的)

结果如图所示:

显示使用sqoop 将 postgreql上的表格数据成功导入到hdfs中,这算今天也有点收获了!

补充:利用Sqoop从PostgreSQL导入数据时遇到的坑

sqoop import \
–connect “jdbc:postgresql://10.101.70.169:5432/db_name” \
–username “postgres” \
–password “123456” \
–table “test_user”\
–target-dir “/user/hive/warehouse/test.db/test_user” \
–fields-terminated-by ‘\t’ \
–lines-terminated-by ‘\n’ \
–hive-drop-import-delims \
–incremental lastmodified \
–merge-key id \
–check-column update_time \
–last-value “2019-03⑵5” \
–m 1 \
— –schema “schema_name” \
–null-string ‘\\N’ \
–null-non-string ‘\\N’

1、-- --schema 一定要放在后面,否则可能致使无运行日志或没法导入数据到指定目录且没法重新履行(报目录已存在)

2、PostgreSQL 须设置SET standard_conforming_strings = on;,否则--null-string和--null-non-string不起作用;

3、--null-string--null-non-string放在-- --schema后面,否则履行时报Can't parse input data: '\N'

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有毛病或未斟酌完全的地方,望不吝赐教。

文章来源:丸子建站

文章标题:sqoop读取postgresql数据库表格导入到hdfs中的实现

https://www.wanzijz.com/view/62389.html

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信