zoukankan      html  css  js  c++  java
  • Hive中导入Amazon S3中的分区表数据的操作

     

    Hive中创建S3的外部表

        数据在S3存放的数据是按时间纬度存放的,每天的数据存放在各自的目录下,目录结构如下截图:

           

        每个目录下面的数据是CSV文件,现在将其导入到Hive中进行查询,通过创建对应的表结构:    

    [sql] view plain copy
     
    1. CREATE EXTERNAL TABLE `palmplay_log_pv_s3_csv`(  
    2.   `meta_id` string COMMENT 'from deserializer',   
    3.   `brand` string COMMENT 'from deserializer',   
    4.   `channel` string COMMENT 'from deserializer',   
    5.   `countrycode` string COMMENT 'from deserializer')  
    6. partitioned by (dt String)  
    7. ROW FORMAT SERDE  
    8.   'org.apache.hadoop.hive.serde2.OpenCSVSerde'  
    9. WITH SERDEPROPERTIES (  
    10.    "separatorChar" = " ",  
    11.    "quoteChar"     = "'",  
    12.    "escapeChar"    = "\"  
    13. )    
    14. STORED AS TEXTFILE  
    15. LOCATION  
    16.   's3a://palmplay_log_pv_csv';  

        然后通过如下语句进行查询:    

    [sql] view plain copy
     
    1. select * from palmplay_log_pv_s3_csv limit 10;  
    2. select * from palmplay_log_pv_s3_csv where dt='2018-04-09' limit 10;  

        此时是查询不到结果,因为这个时候分区表的分区信息并没有加载到Hive的Metastore中,需要先执行将分区信息加载到Metastore中,才可以查询到数据。

    加载表的分区信息到Metastore中

        从S3中将表的分区信息加载到Hive的Metastore中,这个同从HDFS中加载表的分区信息是一样的,执行以下命令进行加载:    

    [plain] view plain copy
     
    1. MSCK REPAIR TABLE palmplay_log_pv_s3_csv;  

        然后再执行select查询就可以查询到数据了。

        注:可以使用hive.metastore.fshandler.threads参数(缺省值为15,配置在hive-site.xml中)来增加用于在MSCK阶段中扫描分区的线程数。

    如果你想了解大数据的学习路线,想学习大数据知识以及需要免费的学习资料可以加群:784789432.欢迎你的加入。每天下午三点开直播分享基础知识,晚上20:00都会开直播给大家分享大数据项目实战。

     

    对表进行分析
        在Amazon S3上处理数据时,分析表的步骤与在HDFS中处理数据时的步骤相同。
        可以通过设置hive.stats.autogather = true或运行analyze table table_name compute statistics命令自动收集表统计信息,例如:
    ANALYZE TABLE table_name PARTITION(dt ='2018-04-09')COMPUTE STATISTICS;
        但是,列统计信息只能通过运行列命令的分析表测试计算统计信息来收集,例如:    

    [sql] view plain copy
     
    1. ANALYZE TABLE table_name PARTITION(ds ='2018-04-09')COLUMNS;  

        有关更多信息和示例,请参阅Apache文档

        参考:https://hortonworks.github.io/hdp-aws/s3-hive/index.html

  • 相关阅读:
    在SUSE12中使用 Machinery 进行高级系统管理
    有多个git项目要用多个秘钥
    Manage, Administrate and Monitor GlassFish v3 from Java code usingAMX & JMX
    apc smart UPS下使用apcupsd注意事项
    Eclipse用法和技巧二十二:快速调整字体大小
    OpenGL(十三) Alpha测试、剪裁测试
    什么图用什么工具画?
    什么图用什么工具画?
    scipy —— 丰富的子包(io、cluster)
    scipy —— 丰富的子包(io、cluster)
  • 原文地址:https://www.cnblogs.com/xuexiqun784789432/p/9151336.html
Copyright © 2011-2022 走看看