使用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 ]; then
    echo ">>>>>>>>>>>>>Oracle同步Hive数据库-执行成功!" 
else
    echo ">>>>>>>>>>>>>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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Effective C++ 笔记】(四)设计与声明

【四】设计与声明 条款18 : 让接口容易被正确使用,不易被误用 Item 18: 让接口容易被正确使用,不易被误用 Make interfaces easy to use correctly and hard to use incorrectly. “让接口容易被正确使用,不易被误用”&#xff0…

C语言日记——调试篇

一、调试调试的基本步骤 发现程序错误的存在 以隔离、消除等方式对错误进行定位 确定错误产生的原因 提出纠正错误的解决办法 对程序错误予以改正,重新测试 二、Debug和Release Debug通常称为调试版本,它包含调试信息,并且不作任何优化…

数据结构C语言之线性表

发现更多计算机知识,欢迎访问Cr不是铬的个人网站 1.1线性表的定义 线性表是具有相同特性的数据元素的一个有限序列 对应的逻辑结构图形: 从线性表的定义中可以看出它的特性: (1)有穷性:一个线性表中的元…

线程状态及线程之间通信

线程状态概述 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中, 有几种状态呢?在 java.lang.Thread.State 这个枚举中给出了六种线程状态: 线程状态 导致状态发生…

Objectarx 使用libcurl请求WebApi

因为开发cad需要请求服务器的数据,再次之前我在服务器搭设了webapi用户传递数据,所以安装了libcurl在objectarx中使用数据。 Open VS2012 x64 Native Tools Command Prompt补充地址: 我在此将相关的引用配置图片,cad里面的应用和…

Linux中的进程等待(超详细)

Linux中的进程等待 1. 进程等待必要性2. 进程等待的方法2.1 wait方法2.2 waitpid方法 3. 获取子进程status4. 具体代码实现 1. 进程等待必要性 我们知道,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内…

UE的PlayerController方法Convert Mouse Location To World Space

先上图: Convert Mouse Location To World这是PlayerController对象中很重要的方法。 需要说明的是两个输出值。 第一个是World Location,这是个基于世界空间的位置值,一开始我以为这个值和当前摄像机的位置是重叠的,但是打印出来…

kaggle项目部署

目录 流程详细步骤注意事项 流程 修改模块地址打包项目上传到kaggle Datasets创建code文件,导入数据与项目粘贴train.py文件,调整超参数,选择GPUsave version,后台训练查看训练结果 详细步骤 打开kaggle网站,点击da…

号卡分销管理系统搭建

随着移动互联网的发展,各种手机应用层出不穷,其中包括了很多用于企业管理的软件。号卡系统分销管理软件就是其中的一种。它是一种基于移动互联网的企业管理软件,能够帮助企业进行号卡的分销管理,从而提高企业的效率和竞争力。 …

抖音快手判断性别、年龄自动关注脚本,按键精灵开源代码!

这个是支持抖音和快手两个平台的,可以进入对方主页然后判断对方年龄和性别,符合条件的关注,不符合条件的跳过下一个ID,所以比较精准,当然你可以二次开发加入更多的平台,小红书之类的,仅供学习&a…

Linux(3):Linux 的文件权限与目录配置

把具有相同的账户放入到一个组里面,这个组就是这两个账户的 群组 。在访问资源(操作系统中计算机的资源)时,可以让这个组里面的所有用户都具有访问权限。 每个账号都可以有多个群组的支持。 在我们Liux 系统当中,默认的…

kibana8.10.4简单使用

1.创建discovery里的日志项目 点击stack management 选择kibana里的数据视图,右上角创建数据视图,输入名称。索引范围。例子 example-* ,匹配以example-开头的所有index。 然后点击 保存数据视图到kibana, 2.Kibana多用户创建及角色权限控…

macOS下如何使用Flask进行开发

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是全栈工…

力扣栈与队列--总结篇

前言 八道题,没想到用了五天。当然需要时间的沉淀,但是一天不能啥也不干啊! 内容 首先得熟悉特点和基本操作。 栈与队列在计算机底层中非常重要,这就是为什么要学好数据结构。 可视化的软件例如APP、网站之类的,都…

Word中NoteExpress不显示的问题

首先确认我们以及安装了word插件 我们打开word却没有。此时我们打开:文件->选项->加载项 我们发现被禁用了 选择【禁用项目】(如果没有,试一试【缓慢且禁用的加载项】),点击转到 选择启用 如果没有禁用且没有出…

工具推荐-卸载小助手GeekUninstaller

一.简介 1.1 GeekUninstalers是一款高效、快速、小巧、免费的软件卸载与清理工具,旨在帮助用户删除系统上安装的程序。 1.2 不同于其他的卸载程序,GeekUninstaller执行深入扫描进程,并清除软件卸载后留下的垃圾。 1.3 它是一款绿色软件&…

有关编译器的科普

Clang和GCC的主要区别如下所示: Clang比GCC编译用的时间更短,包括预处理、语法分析、解析、语义分析、抽象语法树生成的时间。Clang比GCC的内存占用更小。Clang生成的中间产物比GCC更小。Clang的错误提示比GCC更加友好。Clang有静态分析,GCC…

合璧之光,共创辉煌|明道云伙伴大会2023圆满结束

2023年11月3日至11月4日,“合璧之光明道云伙伴大会2023”在上海星河湾酒店顺利举行,报名参会人数超过1800人。大会邀请到明道云标杆客户及合作伙伴分享组织落地零代码的经验及各行业领域解决方案,包括越秀集团、豫园股份、远大医药&#xff0…

Springboot+vue的应急物资管理系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的应急物资管理系统(有报告),Javaee项目,springboot vue前后端分离项目 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。…

极光笔记 | EngageLab Push的多数据中心接入指南

01背景 作为一个面向全球的消息推送服务平台,我们一直致力于给全球用户提供安全、可靠、高效的消息推送服务,因此我们意识到在不同洲建立数据中心的重要性。这样做将有助于提高我们的服务可用性、降低延迟并保护用户数据的安全性。 第一,通过…