本文主要是介绍SparkSQL中创建外部表及使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、使用需求
工作中经常会需要与外围系统打交道,由于外围系统和本系统不处于同一个Hadoop集群下,且不具有访问本系统的权限,所以基本上大数据量的接口都是以文件的方式进行传输。如何快速、便捷的将文件入Spark库中?
通过SparkSQL中创建外部表的方式就能够很好地解决这一需求。
二、解决方案
1. hdfs上创建存放外部表数据文件的目录
hdfs dfs -mkdir -p /hupeng/data/ods_user_base
注意到,如果要创建多级目录时,需要加上-p参数。
2. 创建外部表
create external table ods_user_base (acc_nbr string comment '用户号码',product_type string comment '产品类型',cust_id string comment '客户ID',prd_inst_id string comment '产品实例ID',latn_id string comment '所在地市',area_id string comment '所在区县'
)
row format delimited fields terminated by '|'
lines terminated by '\n'
stored as textfile location 'hdfs://streamcluster/hupeng/data/ods_user_base';
3. 准备数据文件
为了测试如果数据文件的部分字段数据缺失,外部表是否会报错。特意准备了如下内容的数据:
4. 将数据文件put进hdfs中对应的外部表目录
注意到,如果hdfs中外部表目录下数据文件存在的情况,需要替换掉该文件的时候可以加上 -f 参数。
5. 查看外部表数据是否正常
通过上图可以发现,如果数据文件中部分字段的值缺失,在外部表中会以null显示,并不会报错。
6. 测试数据文件中的字段值的个数大于外部表字段的个数情况
1)数据文件
图中红框的值是多余的。
2)数据文件put到hdfs中
hdfs dfs -put -f ./ods_user_data.txt /hupeng/data/ods_user_base
put的时候没有报错。
3)查看外部表数据
也没有报错,只是多余的值没有显示出来。
这篇关于SparkSQL中创建外部表及使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!