大数据平台Hive数据迁移至阿里云ODPS平台流程与问题记录
Posted Huidoo Yang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据平台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 命令行工具
在Windows中,解压即安装。在解压目录中配置odps_config.ini文件
在解压目录odpscmd_public\\bin目录下,双击运行odpscmd.bat。
3.2.2 使用命令行创建表
将all.sql中的建表语句粘贴到命令行执行即可创建表。
3.2.3 建表过程遇到的问题
四、本地数据导入到ODPS平台
4.1 命令行使用tunnel命令导入数据
使用命令行的方式批量导入数据到对应的表中。
4.2 导入数据遇到的主要问题
4.2.1 decimal类型数据无法插入空值
可能需要加什么选项或者参数可以解决,但是在查看tunnel upload命令的详细介绍后也没有找到使用命令行来解决这个问题的方法。
4.2.2 原始数据存在的问题
问题描述:
以上是关于大数据平台Hive数据迁移至阿里云ODPS平台流程与问题记录的主要内容,如果未能解决你的问题,请参考以下文章