大数据平台Hive数据迁移至阿里云ODPS平台流程与问题记录

一、背景介绍

  最近几天,接到公司的一个将当前大数据平台数据全部迁移到阿里云ODPS平台上的任务。而申请的这个ODPS平台是属于政务内网的,因考虑到安全问题当前的大数据平台与阿里云ODPS的网络是不通的,所以不能使用数据采集工作流模板。

  然而,考虑到原大数据平台数据量并不是很大,可以通过将原大数据平台数据导出到CSV文件,然后再将CSV文件导入到ODPS平台。在这个过程中踩的坑有点多,所以想写篇文档作为记录。

二、大数据平台Hive数据导出到本地

  编写export_data.sh脚本如下:

#!/bin/bash
#
#导出数据
hive -e "use swt_ods; show tables;" > /root/hive_data/table_names.txt
for table_name in `cat /root/hive_data/table_names.txt`
do
  hive -e "select * from swt_ods.$table_name;" > /root/hive_data/export_data/$table_name".csv"
  sed -i ‘s/\t/,/g‘ /root/hive_data/export_data/$table_name".csv"
done

  执行脚本,并将数据/root/hive_data/export_data/目录下载到本地。

三、ODPS平台创建对应表

3.1 导出原大数据平台Hive建表语句

  编写export_create_table_sql.sh脚本如下:

#!/bin/bash
#
#导出DDL
hive -e "use swt_ods; show tables;" > /root/hive_data/table_names.txt
for table_name in `cat /root/hive_data/table_names.txt`
do
  hive -e "show create table swt_ods.$table_name;" > /root/hive_data/export_create_table_sql/$table_name
  tac $table_name| sed 1,14d| tac > /root/hive_data/export_create_table_sql/$table_name".sql"
  rm -f $table_name
  echo ";" >> /root/hive_data/export_create_table_sql/$table_name".sql"
  cat /root/hive_data/export_create_table_sql/$table_name".sql" >> /root/hive_data/export_create_table_sql/all.sql
done

  执行脚本,并将/root/hive_data/export_create_table_sql/all.sql下载到本地。

3.2 在ODPS中创建对应的表

3.2.1 下载并配置MaxCompute 命令行工具

  下载及说明地址:http://repo.aliyun.com/odpscmd/?spm=a2c4g.11186623.2.4.SNNjSQ

  点击压缩包链接下载

  在Windows中,解压即安装。在解压目录中配置odps_config.ini文件

  在解压目录odpscmd_public\bin目录下,双击运行odpscmd.bat。

 3.2.2 使用命令行创建表

  将all.sql中的建表语句粘贴到命令行执行即可创建表。

3.2.3 建表过程遇到的问题

  主要问题:

  一是,hive中建表的属性的数据类型和MaxCompute的数据类型不对应。可以参考数据类型说明文档,https://help.aliyun.com/document_detail/27821.html?spm=a2c4g.11186623.2.5.X8fmyl 。例如:decimal类型不需要添加精度,如果写成decimal(a,b)则会报错;MaxCompute没有date类型,只有datetime类型;没有char类型。所以要根据MaxCompute的数据类型,对hive的建表语句进行调整。

  二是,涉及到新数据类型(TINYINT、SMALLINT、 INT、 FLOAT、VARCHAR、TIMESTAMP BINARY),需在SQL语句前加语句set odps.sql.type.system.odps2=true;,执行时set语句和SQL语句一起提交执行。

  在解决完上述两个问题后,在重复步骤二,在命令行中批量执行建表语句。

四、本地数据导入到ODPS平台

 4.1 命令行使用tunnel命令导入数据

  使用命令行的方式批量导入数据到对应的表中。

tunnel上传数据的命令为:tunnel upload [options] <path> <[project.]table[/partition]>。详见:https://help.aliyun.com/document_detail/27833.html?spm=a2c4g.11186623.2.1.rLlM5i

例如:tunnel upload C:\PATH\table_name.csv project_name.table_name;

4.2 导入数据遇到的主要问题

4.2.1 decimal类型数据无法插入空值

  问题描述:

  在导入数据时报format error, decimal nullcontent错误。

  可能需要加什么选项或者参数可以解决,但是在查看tunnel upload命令的详细介绍后也没有找到使用命令行来解决这个问题的方法。

  解决方法:

使用MaxCompute Studio 导入数据可以解决上述问题。MaxCompute Studio安装及介绍可参看文档,https://help.aliyun.com/document_detail/50889.html?spm=a2c4g.11186623.6.745.ZVGpPm

4.2.2 原始数据存在的问题

  问题描述:

  在导入数据时报column missmatch错误。

  解决方法:

  经检查原始数据,可以发现数据中存在列,该列的值中含有逗号。而数据导入按逗号作为列分隔符,所以会出现数据列数大于表的列数。因为这样的表比较少,所以直接修改数据中那一列中的逗号为其他符号,然后再导入。

原文地址:https://www.cnblogs.com/yangp/p/9235386.html

时间: 2024-09-29 04:02:07

大数据平台Hive数据迁移至阿里云ODPS平台流程与问题记录的相关文章

10.1 阿里云物联网平台介绍

阿里云物联网平台是阿里巴巴公司推出的专业物联网服务平台,其提供的详尽的文档和清晰的管理界面非常适合刚刚接触物联网平台的初学者,对物联网系统架构.管理等有一个整体上的把握. 阿里云物联网平台文档 阿里云物联网管理平台可视化界面 (需要注册阿里云账户后才能使用) 基于阿里云物联网平台的物联网系统架构 基于阿里云物联网平台的物联网系统架构图如上图所示,整个系统可大致分为4层架构: 边缘设备:物联网系统中的数据生产者,通常为传感器,一般认为没有计算能力. 边缘节点:边缘节点对下收集边缘设备产生的数据,对

兑吧:从自建HBase迁移到阿里云HBase实战经验

摘要: 业务介绍 兑吧集团包含兑吧网络和推啊网络,兑吧网络是一家致力于帮助互联网企业提升运营效率的用户运营服务平台,提供积分商城和媒体运营服务.推啊网络是一家互动式广告平台,经过多年的探索与实践,首创了全新的移动广告模式,实现了广告主.媒体.用户多方共赢. 业务介绍 兑吧集团包含兑吧网络和推啊网络,兑吧网络是一家致力于帮助互联网企业提升运营效率的用户运营服务平台,提供积分商城和媒体运营服务.推啊网络是一家互动式广告平台,经过多年的探索与实践,首创了全新的移动广告模式,实现了广告主.媒体.用户多方

阿里云机器学习平台——PAI平台

在云栖TechDay第十五期活动上,阿里云iDST资深技术专家褚崴给大家带来了<阿里云机器学习平台>的分享,他以机器学习的概念入手展开了此次分享,演讲中他重点介绍了阿里云机器学习平台的基础架构和产品特点,并结合阿里内部的芝麻信用分.推荐系统等场景讲解了PAI平台的具体应用方案. 下文根据褚崴的演讲内容整理. 机器学习 图一 机器学习分类 机器学习简单来说就是,人教机器在我们积累的数据当中发现规律,然后能够辅助我们来做一些预测和决策. 机器学习笼统地讲可以分为三类: 1)有监督学习(superv

阿里云发布企业数字化及上云外包平台服务:阿里云众包平台

摘要: 阿里云正式发布旗下众包平台业务(网址:https://zhongbao.aliyun.com/),支持包括:网站定制开发,APP.电商系统等软件开发,商标.商品LOGO.VI.产品包装设计.营销推广.大数据人工智能等各类企业上云.数字化转型服务. 阿里云正式发布旗下众包平台业务(网址:https://zhongbao.aliyun.com/),支持包括:网站定制开发,APP.电商系统等软件开发,商标.商品LOGO.VI.产品包装设计.营销推广.大数据人工智能等各类企业上云.数字化转型服务

阿里云物联网平台体验(树莓派+Python篇)

阿里云物联网平台体验(树莓派+Python篇) 虽然对阿里云物联网平台比较熟悉了,从一开始就有幸参与了飞凤平台(Link Develop 一站式开发平台的前身)的一些偏硬件接入的工作.但是同时也见证了阿里云物联网团队从几十人到数百人的迅速扩张,其物联网平台所承载的内容也急速膨胀,物联网开发套件基础版.飞凤.Link Develop一站式开发平台.物联网开发平台高级版.飞燕.飞象.城市大脑.农业大脑和工业互联平台不一而足……,很难有精力真正熟悉和了解阿里云的每一款物联网产品. 这次有幸成为物联网平

基于阿里云物联网平台实现的简易出入监控

本文通过一个简单实例,主要介绍了如何使用树莓派快速接入阿里云iot platform,并实现了一个简易的监控人员出入并拍照上送钉钉群的场景 场景在公司大门入口处布点树莓派和红外感应,实现出入口人员出入时,自动拍照并上送钉钉群机器人 准备物料准备树莓派HC-SR501 人体红外感应器树莓派摄像头母对母杜邦线三根阿里云环境准备物联网平台对象存储OSS函数计算日志服务(可选)操作步骤1 云端开发1.1 物联网平台登录阿里云控制台,进入物联网平台控制面板 1.1.1 新建产品进入设备管理,创建产品,选择

阿里云 IOT 对接设备开发 C# 开发设备对接阿里云 IOT平台

原文:阿里云 IOT 对接设备开发 C# 开发设备对接阿里云 IOT平台 一,创建阿里云 IOT 产品.设备 目前阿里云每月赠送 100 万条流量,可以免费使用基础版.高级版,开通后即可免费使用. 阿里云 IOT 平台地址 https://iot.console.aliyun.com/product 登陆开通后,新建测试产品.设备. 创建产品 产品的定义是,一类硬件.功能.外形完全相同的设备.所以,添加一个产品后,我们就可以在此类别下添加成千上万个设备. 下面的信息要选.设备.非网关,原因后面说

树莓派3B+实践(2)- 阿里云物联网平台接入(设备端C语言SDK编译)解决undefined reference to `IOT_CMP_Init&#39;错误

本想实践亚马逊aws的接入方案,由于亚马逊aws个人账户需要VISA信用卡,所以先用阿里云实践学习,以后有机会再接入aws. 1. 申请一个阿里云账户,需要绑定支付宝账户,阿里云个人账户可以申请部分业务免费,而且基础版每个月前100w条消息传输免费,个人用来学习实践绰绰有余. 2.根据阿里云物联网平台的帮助文档进行服务器端配置,这里不再赘述,帮助文档网址. 3. 重点说一下遇到的坑,由于阿里云的设备端sdk一直在更新功能,然而官网和github上的帮助文档没有随之更新,所以直接按照文档编译sdk

阿里云 Debian Linux 布署记录

摘要: 主要安装了web环境,java+tomcat+mysql+nginx(暂没没用) 数据盘挂载在/data下,项目,索引都放/data目录下 java,tomcat,mysql程序都在/root/www建立的有快捷方式   1.软件包的安装 apt-get install 下载的软件都放/var/cache/apt/archives目录下,可用apt-get autoclean或apt-get clean删除已下载的包 2.安装mysql 5.6.deb dpkg –i  mysql-5.