111.Parquet表的使用

  • Parquet格式:
    • 数据模型: Avro, Thrift, Protocol Buffers, POJOs
    • 查询引擎: Hive, Impala, Pig, Presto, Drill, Tajo, HAWQ, IBM Big SQL
    • 计算框架: MapReduce, Spark, Cascading, Crunch, Scalding, Kite
  • Parquet是一种列式的二进制文件格式,Impala基于Parquet文件可以高效的处理大型复杂查询

111.1 数据准备

  • 使用hive-testbench生成15GB测试数据,挑选catalog_sales表做为测试表
    • 生成的表数据为text类型
  • 查看catalog_sales表生成的text数据大小

111.2 创建Parquet表

  • SQL脚本:
set parquet_file_size=512M;
set COMPRESSION_CODEC=snappy;
drop table if exists catalog_sales;
create table default.catalog_sales 
stored as parquet
as select * from tpcds_text_15.catalog_sales;
  • 创建Parquet表并导入数据
[root@ip-168-12-26-81 impala-parquet]# impala-shell -f load_parquet.sql 
Starting Impala Shell without Kerberos authentication
  • 查看HDFS上catalog_sales表占用空间大小
[root@ip-168-12-13-67 ~]# hadoop fs -du -h /user/hive/warehouse
  • 验证
    • 数据量大小与原始表tpcds_text_15.catalog_sales表数据量一致即可

111.3 Parquet block size

  • 默认情况下,Impala的INSERT…SELECT语句创建的Parquet文件的块大小是256MB
  • 被Impala写入的Parquet文件都是一个单独的块,允许整个文件刚好由一台机器处理
    • 在将Parquet文件拷贝到HDFS其他目录或者其他HDFS时,使用hdfs dfs -pb来保留原始块大小
  • 如果Parquet表中或者查询访问的某个分区中只有一个或几个数据块,则可能会导致查询性能下降:没有足够的数据来利用Impala查询的分布式能力
    • 每个数据块由其中一台DataNode上的单个CPU核来处理
  • 在一个由100个节点组成的16核机器中,可以同时处理数千个数据文件
    • 如在“许多小文件”和“单个大文件”之间找到一个高I/O和并行处理能力的平衡点,就可以在执行INSERT…SELECT语句之前设置PARQUET_FILE_SIZE,以控制每个生成的Parquet文件的大小
    • Impala2.0之前你要指定绝对字节数,2.0以后你可以以m或者g为单位,分别代表MB和GB大小。基于特定的数据量选择不同的file size做一些基准测试,然后找到适合你集群和数据文件的PARQUET_FILE_SIZE大小

大数据视频推荐:
CSDN
大数据语音推荐:
ELK7 stack开发运维
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值