大数据-hive-记录一次不用sqoop将mysql库的数据导入到hive库中

一、场景描述


    公司需要的一些数据是自己收集的,收集的时候存储在mysql中,现在需要将mysql中的存储的数据导入到hive库中。

    网上查看教程找到很多的导入方式都报错,描述最多的是sqoop导入。Sqoop(SQL-to-Hadoop):主要用于传统数据库和hadoop之间的传输数据。

    但是hive环境是我自己搭建起来的,还没有安装sqoop,安装又会浪费大量的时间,所有思考能不能不通过sqoop将mysql中的数据导入到hive中。

二、导入过程


    将mysql数据导入hive库的思路是:
    第一步:将mysql的数据利用Navicate工具导出成txt文件,注意:数据的列与列之间用空格隔开(这与下面创建hive表相对应)
            需要注意的是:每个字段的数据不能有双引号或者单引号。(Navicate导出向导:栏位分隔符 选择:空格,文本限定符 选择:无)
            导出数据如下所示,(第一步不会的请自行百度,有很多文章)
            例如:1 91320115MA1MB5TFXJ 南京外曼进出口贸易有限公司 无报关权的其他企业 跨境电子商务企业 跨境电子商务交易平台 金陵海关 一般信用企业
            
    第二步:hive库的建表语句,数据之间以空格“ ”,注意这个语句就是代表以空格隔开,与第一步对应fields terminated by ' ' 
    建表语句(注意:建表之前首先得创建一个数据库,如果已经创建好了,需要use命令指定该数据库):

create external table major_events(
`id` string comment '自增id',
`events_name` string comment '事件名称',
`events_content` string comment '事件内容',
`source` string comment '来源网站',
`date` string comment '发生时间'
) comment '重大事件表'
row format delimited
fields terminated by ' ' 
lines terminated by '\n' 
stored as textfile 
LOCATION 
'/tmp/nanjing/major_events';

    第三步:将mysql导出的major_events.txt文件上传到linux的/home/software/hadoop-2.7.1/hadoop_data/目录下
            在hive中执行下面语句导入数据:

LOAD DATA LOCAL INPATH '/home/software/hadoop-2.7.1/hadoop_data/major_events.txt' OVERWRITE INTO TABLE major_events;

    第四步:查询结果看到导入成功。
 

   hive> select * from major_events limit 1;
OK
1       央行就非银行支付机构条例征求意见        强化支付领域反垄断监管措施      为加强对非银行支付机构的监督管理,规范非银行支付机构行为,防范支付风险,保障当事人合法权益,促进支付服务市场健康发展,中国人民银行会同有关部门研究起草了《非银行支付机构条例(征求意见稿)》(下称《条例》),现向社会公开征求意见,意见反馈截止时间为2021年2月19日。  央行在《条例》起草说明中指出,党中央、国务院高度重视防控金融风险、保障金融安全。党的十九大要求“健全金融监管体系,守住不发生系统性金融风险的底线”。防范支付领域金融风险是守住不发生系统性金融风险底线的重要一环。2010年6月,人民银行制定《非金融机构支付服务管理办法》(中国人民银行令〔2010〕第2号发布),奠定了非银行支付机构(以下简称支付机构)监管基础。近年来,支付服务市场快速发展,创新层出不穷,风险复杂多变,机构退出和处置面临新的要求。总体看,为适应市场发展、对外开放和强化监管需要,迫切需要加快推动出台《条例》,提升支付机构监管法律层级,进一步规范支付机构合规经营,维护支付服务市场健康发展。  在起草思路上,一是坚持功能监管的理念。强调同样的业务遵守相同的规则,避免监管套利和监管空白。二是坚持机构监管与业务监管相结合。按照“先证后照”原则,对支付机构实施机构监管,同时对支付机构业务经营、关联交易等实施全方位监管。三是坚持穿透式监管。加强对股东、实际控制人和最终受益人准入和变更的监管。  从《条例》主要内容来看,《条例》共六章,七十五条。包括:第一章总则,第二章设立、变更与终止,第三章支付业务规则,第四章监督与管理,第五章法律责任,第六章附则。  总则方面,《条例》遵循公平竞争、实质重于形式、普惠金融的核心监管原则,按照业务实质确定支付业务新的分类方式。即,按照资金和信息两个维度,根据是否开立账户(提供预付价值)、是否具备存款类机构特征,将支付业务重新划分为储值账户运营业务和支付交易处理业务两类,以适应技术和业务创新需要,有效防止监管套利和监管空白。  设立、变更与终止方面,《条例》从我国国情出发,坚持金融业务必须持牌经营,对支付机构按照“先证后照”原则,强化公司治理要求,实施全方位、全流程监管。同时,通过正面清单加负面清单方式,明确成为支付机构股东、实际控制人和最终受益人的条件及禁止情形,加强对股东资质、实际控制人和最终受益人的监管。  支付业务规则方面,《条例》坚持问题导向,强化综合监管,系统性提出支付机构在从事支付业务时必须遵守的原则与规定。一是根据从事储值账户运营业务的支付机构和从事支付交易处理业务的支付机构风险程度的不同,分类确定业务监管要求。二是明确支付机构发起的跨机构支付业务,应通过具有相应合法资质的清算机构处理,确保资金和信息安全、透明。三是强化备付金管理要求,强调备付金不属于支付机构自有财产,要求支付机构将备付金存放在人民银行或符合要求的商业银行,并明确与之配套的审慎监管措施,充分保障用户权益。  监督与管理方面,《条例》以强化金融监管为重点,以防范系统性金融风险为底线,丰富监管手段。一是强化支付领域反垄断监管措施,明确界定相关市场范围以及市场支配地位认定标准,维护公平竞争市场秩序。二是规范人民银行的检查权和检查措施,保障人民银行执法权的有效行使。三是明确支付机构股权质押、开展创新业务、重大事项变更等情况须向人民银行备案等监管要求。  法律责任方面,《条例》以做好支付领域风险防范和处置、坚决打击违规活动、整治金融乱象为主旨,明确支付机构退出情形,加大对支付机构违规行为和违规人员的处罚力度。明确对无证经营支付业务的机构参照《防范和处置非法集资条例》相关规定进行处理,加大对持牌机构为无证经营支付业务的机构提供支付业务渠道行为的处罚力度。  附则方面,明确中国支付清算协会对支付信息服务机构进行备案管理。对支付信息服务机构公司治理等方面的监管,参照《条例》关于支付机构的相关规定执行。  (刘琪)
Time taken: 0.203 seconds, Fetched: 1 row(s)
hive> 

 

三、导入过程中遇到的问题总结


    在导入时,因为是自己收集的数据,其中events_name、events_content这两列的数据中,包含回车键,制表符,空格等特殊字符,需要在第一步之前将这两列的数据做处理。
    处理过程:进入mysql库的major_events表中,执行下面替换语句:

update major_events set
events_name= replace(replace(replace(events_name,'\r',' '),'\n',' '),'\t',' '),
events_content= replace(replace(replace(events_content,'\r',' '),'\n',' '),'\t',' ');

    刚开始,就是忽略了这个问题,导致导入的数据虽然提示导入成功了,但是查询时全部是NULL值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值