Spark:读取文本文件存为hive表最佳实践

存储表的时候,由以下几点要注意:
写入hive表前用coalesce方法对原始数据进行重新分区。
因为读取的数据一般是纯文本,写入hive中的默认是用snappy压缩过的parquet(.snappy.parquet),所以分区数如果保持原来的话可能会造成每个.snappy.parquet文件只有20~30MB大小,一般将分区数除以3或4左右即可。

df.coalesce(df.rdd.getNumPartitions/3)  
    .write
    .mode(SaveMode.Append)
    .saveAsTable("tablename")

过滤掉那些为null的行,能防止处理数据过程中报空指针异常。删除行的方式为:

val res = df.na.drop(Seq("column1", "column2", "column3")) 
// 这3个字段只要有1个为null就过滤掉。
posted @ 2019-01-03 16:07  xuejianbest  阅读(1020)  评论(0编辑  收藏  举报