使用Sqoop命令从Oracle同步数据到Hive,修复数据乱码 %0A的问题

一、创建一张Hive测试表

create table test_oracle_hive(id_code      string,phone_code    string,status    string,create_time    string
) partitioned by(partition_date string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

创建分区字段partition_date,指定分隔符“,”

二、编写Sqoop数据同步命令

我这里使用的是shell脚本的方式:

#!/bin/bash
export LANG="en_US.UTF-8"
part_date=etl_date=`date "-d +0 day" "+%Y%m%d"`
echo "当前分区时间为: $part_date"
sqoop import -D mapred.job.queue.name=root.realtime_queue --connect jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:1521/testdb --username test --password test01 --table APP.TEST_ORACLE_HIVE_TWO --hive-import --hive-partition-key partition_date --hive-partition-value $part_date --hive-table xxx.test_data_oracle_hive --fields-terminated-by ',' --null-string '\\N' --null-non-string '\\N' --hive-overwrite -m 1
if [ $? -eq 0 ]; thenecho ">>>>>>>>>>>>>Oracle同步Hive数据库-执行成功!" 
elseecho ">>>>>>>>>>>>>Oracle同步Hive数据库-执行失败!"
fi

命令相关属性说明:

  1. --connect:连接Oracle数据库的URL,例如jdbc:oracle:thin:@219.216.110.120:1521:orcl。
  2. --username:连接Oracle数据库的用户名,例如TEST1。
  3. --password:连接Oracle数据库的密码,例如test1。
  4. --table:要导入的Oracle表名,例如TEST1。
  5. --hive-table:在Hive中要创建或覆盖的表名,例如test1_test1。
  6. --fields-terminated-by:指定字段分隔符,例如'\t'(制表符)。
  7. --hive-import:启用Hive导入。
  8. --hive-overwrite:在导入数据时覆盖已存在的Hive表。
  9. --null-string:指定空值对应的字符串,例如'NULL'。
  10. --null-non-string:指定非空值对应的字符串,例如'NULL'。

三,执行脚本命令

我这里是使用的azkaban做的任务执行,也可以根据自己所需,sh xxx.sh执行脚本,如图:

任务执行完成,发现数据有乱码:

分区时间是这样取值的:

在服务器单独执行命令,发现是文件生成的时候乱码的:

四、问题修改

然后,检查命令没问题后,发现我使用的文本编辑器 NotePad++ 在编写命令时,

是在Windows(CR LF) 模式下的,转换为 Unix(LF) ,如图:

然后,重新执行脚本,数据就恢复正常了

五、Sqoop常用命令

导入数据:

sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root --table users --target-dir /user/hadoop/data

导出数据:

sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password root --table users --export-dir /user/hadoop/data

查询Job列表:

sqoop job --list

查询Job详细信息:

sqoop job --show jobname

执行Job

sqoop job --exec jobname

删除Job

sqoop job --delete jobname

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/198964.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysqlbinlog使用记录

首先要确认mysql启用了binlog功能。一般默认启用。 mysql> select log_bin; ----------- | log_bin | ----------- | 1 | ----------- 然后确认binlog目录 mysql> select log_bin_basename; ---------------------------- | log_bin_basename | -----…

xlua源码分析(三)C#访问lua的映射

xlua源码分析(三)C#访问lua的映射 上一节我们主要分析了lua call C#的无wrap实现。同时我们在第一节里提到过,C#使用LuaTable类持有lua层的table,以及使用Action委托持有lua层的function。而在xlua的官方文档中,推荐使…

<b><strong>,<i><em>标签的区别

1. b标签和strong标签 b标签:仅仅是UI层面的加粗样式,并不具备HTML语义 strong标签:不仅是在UI层面的加粗样式,具备HTML语义,表示强调 2. i标签和em标签 i 标签:仅仅是UI层面的斜体样式,并不…

Django学习日志08

如何开启事务 事务的目的:为了保证多个SQL语句执行成功,执行失败,前后保持一致,保证数据安全 ACID属性: A:原子性(Atomicity):指事务是原子的,对事务中的操…

系统设计之通讯协议

一、通讯协议 架构风格定义了应用程序编程接口 (API) 的不同组件如何相互交互。因此,它们通过提供设计和构建 API 的标准方法来确保效率、可靠性以及与其他系统集成的便捷性。以下是最常用的样式: 1. SOAP 成熟、全面、基于XML 最适合于企业应用 可扩展…

STM32获取最大堆栈空间

参考 stackflow相关讨论 原理 通过参考链接,可知探测Stack的最大深度是先在stack中填充不常用的特定值,然后实时检测这些值哪些发生了变化,变化的表示使用到了这个空间,如果程序完全遍历后,有些值还是没变&#xff…

网络运维与网络安全 学习笔记2023.11.19

网络运维与网络安全 学习笔记 第二十天 今日目标 STP工作原理、STP高级配置、MSTP工作原理 MSTP配置案例、MSTP负载均衡 STP工作原理 单点故障 PC之间的互通链路仅仅存在1个 任何一个设备或链路出现问题,PC之间都会无法通信 解决方案 增加冗余/备份设备 增加冗…

9 HDFS架构剖析

问题 100台服务器,存储空间单个200GB 20T 5T文件如何存储? 128MB一块 128MB81GB 1288*10241TB 5T数据分成的128MB的块数 8192 * 5 客户端(client)代表用户通过与namenode和datanode交互来访问整个文件系统。 HDFS集群有两类节点: 一个na…

成为电车销量的“中坚力量”,微小型车不能只有“低价”?

日常交通中,越来越多的汽车开始“绿牌出行”,市场的最新销量也不断验证着新能源车抢占更多市场的事实。 11月初,国内多家车企公布10月销量数据,其中新能源汽车销量增长仍然亮眼。根据中国工业和信息化部数据,我国汽车…

Nessus扫描结果出现在TE.IO或者ES容器结果查看问题解决方案

Nessus扫描结果出现在TE.IO或者ES容器结果查看问题解决方案 也是昨天晚上折腾了一个晚上到凌晨四点多,实在没有头绪,在论坛,贴吧,各种求助查贴,没有什么人解决.后面请教了一个安全圈的大佬朋友给解决了. 我的问题是在kali上的,所以只写了kali 的解决方案: 修改插件: vim /opt/…

Hadoop-- hdfs

1、HDFS中的三个进程:NameNode(NN)、DataNode(DN)、SecondNameNode(SNN) 2、NameNode(NN) 1、作用: 1、接收客户端的一个读、写的服务,在namenode上存储了数据文件和datanode的映射的关系。 …

【Q1—45min】

1.epoll除了边沿触发还有什么?与select区别. epoll 是Linux平台下的一种特有的多路复用IO实现方式,与传统的 select 相比,epoll 在性能上有很大的提升。 epoll是一种当文件描述符的内核缓冲区非空的时候,发出可读信号进行通知&…

划片机新手教程:从准备工作到注意事项全解析!

随着科技的飞速发展,划片机已成为半导体行业不可或缺的一部分。对于新手来说,如何正确操作划片机显得尤为重要。以下是新手操作划片机的步骤和建议。 一、准备工作 在开始操作划片机之前,首先需要准备好以下工具和材料: 1. 划片机…

Java(三)(static,代码块,单例设计模式,继承)

目录 static 有无static修饰的成员变量 有无static修饰的成员方法 static的注意事项 代码块 静态代码块 实例代码块 单例设计模式 饿汉式单例写法 懒汉式单例写法 继承 基本概念 注意事项 权限修饰符 单继承 object 方法重写 子类方法中访问其他成员(成员变量…

Flume学习笔记(3)—— Flume 自定义组件

前置知识: Flume学习笔记(1)—— Flume入门-CSDN博客 Flume学习笔记(2)—— Flume进阶-CSDN博客 Flume 自定义组件 自定义 Interceptor 需求分析:使用 Flume 采集服务器本地日志,需要按照日志…

交易机器人-微信群通知

微信公众号:大数据高性能计算 1 背景 背景是基于人工去做交易本身无法做到24小时无时无刻的交易,主要是虚拟币本身它是24小时交易,人无法做到24小时盯盘,其次就是如果你希望通过配置更加复杂的规则甚至需要爬取最新的信息走模型进行量化交易的时候,就需要自己去做一些量化…

Linux 环境搭建

✨个人主页: Anmia.🎉所属专栏: C Language 🎃操作环境: Visual Studio 2019 版本 本章概要 1. 认识 Linux, 了解 Linux 的相关背景 2. 学会如何使用云服务器 3. 掌握使用远程终端工具 xshell 登陆 Linux 服务器 1. Li…

语义检索系统【全】:基于milvus语义检索系统指令全流程-快速部署版

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

学生邮箱白嫖/免费安装JetBrains全家桶(IDEA/pycharm等) —— 保姆级教程

🧸欢迎来到dream_ready的博客,📜相信您对博主首页也很感兴趣o (ˉ▽ˉ;) 博主首页,更多redis、java等优质好文以及各种保姆级教程等您挖掘! 目录 前言 JetBrains全家桶介绍 申请过程: 获取学…

C++类与对象(2)—构造函数析构函数

目录 一、类的6个默认成员函数 二、构造函数 1、定义 2、特征 三、析构函数 1、定义 2、特征 四、默认生成构造&析构 1、定义 2、内置类型 3、自定义类型 4、声明处给默认值 5、总结 下一篇 一、类的6个默认成员函数 如果一个类中没有定义任何成员&#xff0…