spark spark-submit执行的结果映射到hive表中

1. spark执行的输出结果如何保存

通常把hive表对应的路径当做spark执行的输出目录:/user/hive/warehouse/${hive_db_name}.db/$hive_tb_name

一般日志的映射hive表要建成带分区的格式/user/hive/warehouse/${hive_db_name}.db/$hive_tb_name/dt=${dt}/hour=${dt}

2.spark数据结果的格式如何选择

一般来说,普通的输出就是Textfile格式,但是为了压缩空间,提高效率等,还可以报错为hive识别的格式:orcfile,rcfile,parquet等

如:利用dataframe的方法.write.parquet(outputPath),可以保存为parquet格式

3. hive表的建表

首先,建表的时候肯定要指定存储格式,要和spark输出数据文件格式保持一致。

同时也要指定目录,例如:

CREATE EXTERNAL TABLE `matrix_tmp.tmp_ljt_dws_service_security_audit_log`(
  `video_id` string COMMENT '视频id', 
  `stage` string COMMENT '阶段  1、白名单检测 2、md5检测 3、指纹检测 4、图片检测 5、关键字检测 6、人工安全审核', 
  `video_source` string COMMENT '视频来源    channel->shootType 视频表', 
  `parameters` map<string,string> COMMENT '各事件的其他参数')
COMMENT '安全管控服务端日志'
stored as Parquet
LOCATION
  'hdfs://nameservice1/user/matrix/DwsParserLogTest';

4.hive加载

其实如上述格式,hive表已经可以识别了。但是如果是分区的格式,则必须

use $hive_db_name; 
alter table $hive_tb_name add if not exists partition (dt='$cdate',hour='$chour');
ANALYZE TABLE $hive_tb_name PARTITION(dt='$cdate',hour='$chour') COMPUTE STATISTICS;

其中add partition的作用是加载分区

Analyze Table 是重新计算hive表的统计信息,这样就可以保证资源和空间的回收利用。

猜你喜欢

转载自blog.csdn.net/a627082796/article/details/87867246