文档编写目的
因为CDH5中的Parquet版本为1.5,而CDP7中的Parquet版本为1.10,我们在从CDH5升级到CDP7后,无论是原地升级还是迁移升级,都可能会碰到一个问题,以前在CDH5中使用Hive/Impala生成的低版本Parquet文件还能继续在CDP7中使用吗。本文主要描述将CDH5中的Parquet文件传输到CDP7环境中,使用CDP7中的Hive,Impala,Spark确认能否继续访问这些文件。
- 测试环境
1.集群环境:CDH5.16.2/CDP7.1.1
2.系统环境:Redhat7.6
验证步骤
2.1在CDH5中生成Parquet1.5文件
2.1.1集群版本验证
查看集群Hadoop版本
hadoop version
打开CM页面点击支持点击关于
2.1.2Impala建表测试
打开Hue选择 Impala,创建Parquet表
create external table test1.hive_data_parquet(id string,collectiondate string,collectionaddress string,textch string)STORED AS parquetlocation '/tmp/hivedata_parquet';
执行数据插入
INSERT into test1.hive_data_parquet VALUES ('1','0814','深圳','cloudera');
INSERT into test1.hive_data_parquet VALUES ('2','0814','深圳','cloudera');
INSERT into test1.hive_data_parquet VALUES ('3','0814','深圳','cloudera');
INSERT into test1.hive_data_parquet VALUES ('4','0814','深圳','cloudera');
INSERT into test1.hive_data_parquet VALUES ('5','0814','深圳','cloudera');
INSERT into test1.hive_data_parquet VALUES ('6','0814','深圳','cloudera');
INSERT into test1.hive_data_parquet VALUES ('7','0814','深圳','cloudera');
INSERT into test1.hive_data_parquet VALUES ('8','0814','深圳','cloudera');
INSERT into test1.hive_data_parquet VALUES ('9','0814','深圳','cloudera');
INSERT into test1.hive_data_parquet VALUES ('10','0814','深圳','cloudera');
查询数据是否插入成功
SELECT * FROM test1.hive_data_parquet;
2.1.3使用CDH5中的Spark SQL读取Parquet表
在客户端访问spark-shell,并输入查询语句。
spark2-shell
spark.sql("SELECT * FROM test1.hive_data_parquet").show
查询成功
2.2将Parquet表从CDH5迁移到CDP
2.2.1集群数据迁移
正常采用hadoop distcp命令,这里由于都开启了kerberos,需要配置互信,过程太长,采用hdfs get put scp命令代替
源端执行get命令
hdfs dfs -get /tmp/hivedata_parquet /tmp/
ll /tmp/hivedata_parquet/
scp -r /tmp/hivedata_parquet [email protected]:/tmp/
目标端验证传输成功
ll
hdfs dfs -put/tmp/hivedata_parquet /tmp/hdfs dfs -ls/tmp/hivedata_parquet
2.2.2 在CDP中建立Impala表
create external table test1.hive_data_parquet(
id string,
collectiondate string,
collectionaddress string,
textch string
)
STORED AS parquet
location '/tmp/hivedata_parquet';
2.3 在CDP7中进行测试
2.3.1 集群版本验证
2.3.2 Impala查询测试
SELECT * from test1.hive_data_parquet;
2.3.3 在CDP7中使用Spark SQL读取Parquet1.5的表
spark-shellspark.sql("SELECT * FROM test1.hive_data_parquet").show
查询成功
验证结果
如果将CDH5升级到CDP7,旧集群中的老版本的Parquet1.5文件可以在CDP7中直接被访问,Impala,Hive和Spark均可以访问。
标签:test1,cloudera,0805,Parquet,hive,CDP,parquet,VALUES,data From: https://blog.51cto.com/u_14049791/5731152