Hive

作者: Y小伙儿 | 来源:发表于2018-06-22 15:24 被阅读0次

    一:Hive 默认存储在hdfs上,分为内部表与外部表

          内部表删除时数据与元数据均删除

         外部表删除时则只删除元数据,外部数据不受影响

    二:   Hive支持分区,分区pattition(单分区,双分区)可提高查询效率

    三:默认采用文本格式且不压缩,支持gzip,bzlib,snappy等格式

    四:导入、出数据

            导入数据

      load data local path ‘TEXT.TXT’ overwrite/into table orc_snappy_pro

            导出数据

      hive–e‘select *from orc_snapp_pro’  >>/mnt/guhaifeng/data.txt;

    Hive文件格式包含: §textfile:默认的文本方式   §Sequencefile:二进制格式   §rcfile:面向列的二进制格式 (先水平划分,再垂直划分)  §orc:rcfile的增强版本 

    创建外部表:

        create external table orc_snappy_pro

        (log_time string,

        log_type string,

        Country string,

        log_detail string)

        PARTITIONED BY (dt STRING) ‘comment  分区’

        ROW FORMAT DELIMITEDFIELDS TERMINATED BY ‘\001’

        STORED AS orc

        location ‘s3://mx-hadoop/guhaifeng/orc_snappy_pro/’

        tblproperties ("orc.compress"="SNAPPY");

    RDD存储Hive两种方式:

    一:使用反射来推断包含特定类型对象的RDD的模式

           1.将RDD转化为一个SchemaRDD

       rows = split_filed.map(lambda words:Row(log_time=words[0],log_type=words[1],country=words[2])

       tmp_dataframe = sqlContext.createDataFrame(rows)

    2.SchemaRDD注册临时表

       tmp_dataframe.registerTempTable(“tmp_table”)

    3. 临时表数据插入到hive表

       results = sqlContext.sql(“insert into orc_snaooy_pro partition=%s) select  t.log_type,t.log_time from tmp_table t" %(log_date))

    二:编程方式指定模式

        从原始RDD创建元组或列表的RDD;

        创建StructType在步骤1中创建的RDD中由元组或列表结构匹配的模式。

        通过createDataFrame提供的方法将模式应用于RDD SparkSession

    Hive-->DataFrame --> RDD

    读取hive数据写入其他表

    采用Rcfile存储时需要设置以下模式

    相关文章

      网友评论

          本文标题:Hive

          本文链接:https://www.haomeiwen.com/subject/lkvkyftx.html