云小课|MRS 基础原理之 CarbonData 入门
本文分享自华为云社区《【云小课】EI第40课 MRS基础原理之CarbonData入门》,作者:Hello EI。
CarbonData 是一种新型的 Apache Hadoop 本地文件格式,使用先进的列式存储、索引、压缩和编码技术,以提高计算效率,有助于加速超过 PB 数量级的数据查询,可用于更快的交互查询。同时,CarbonData 也是一种将数据源与 Spark 集成的高性能分析引擎。
使用 CarbonData 的目的是对大数据即席查询提供超快速响应。从根本上说,CarbonData 是一个 OLAP 引擎,采用类似于 RDBMS 中的表来存储数据。用户可将大量(10TB 以上)的数据导入以 CarbonData 格式创建的表中,CarbonData 将以压缩的多维索引列格式自动组织和存储数据。数据被加载到 CarbonData 后,就可以执行即席查询,CarbonData 将对数据查询提供秒级响应。
CarbonData 将数据源集成到 Spark 生态系统,用户可使用 Spark SQL 执行数据查询和分析。也可以使用 Spark 提供的第三方工具 JDBCServer 连接到 Spark SQL。
本文以从 CSV 文件加载数据到 CarbonData Table 为例,介绍创建 CarbonData table、加载数据,以及查询数据的快速入门流程。
使用 CarbonData 需要安装 Spark2x 组件,并安装 Spark2x 的客户端。
MRS 集群的创建可参考创建集群,例如购买一个 MRS 3.1.0 版本集群。
安装 Spark2x 客户端,可参考安装客户端,例如客户端安装目录为:“/opt/client”。
对于安全模式的集群(开启了 Kerberos 认证),在使用 CarbonData 时,需要创建一个具有访问 CarbonData 权限的用户,可参考创建用户,用户组选择 hadoop 和 hive,主组选择 hadoop,例如创建人机用户“testuser”。
准备 CSV 文件
准备加载到 CarbonData Table 的 CSV 文件。
在本地准备 CSV 文件,文件名为:test.csv。13418592122,1001,MAC 地址,2017-10-23 15:32:30,2017-10-24 15:32:30,62.50,74.56 13418592123,1002,MAC 地址,2017-10-23 16:32:30,2017-10-24 16:32:30,17.80,76.28 13418592124,1003,MAC 地址,2017-10-23 17:32:30,2017-10-24 17:32:30,20.40,92.94 13418592125,1004,MAC 地址,2017-10-23 18:32:30,2017-10-24 18:32:30,73.84,8.58 13418592126,1005,MAC 地址,2017-10-23 19:32:30,2017-10-24 19:32:30,80.50,88.02 13418592127,1006,MAC 地址,2017-10-23 20:32:30,2017-10-24 20:32:30,65.77,71.24 13418592128,1007,MAC 地址,2017-10-23 21:32:30,2017-10-24 21:32:30,75.21,76.04 13418592129,1008,MAC 地址,2017-10-23 22:32:30,2017-10-24 22:32:30,63.30,94.40 13418592130,1009,MAC 地址,2017-10-23 23:32:30,2017-10-24 23:32:30,95.51,50.17 13418592131,1010,MAC 地址,2017-10-24 00:32:30,2017-10-25 00:32:30,39.62,99.13
将 CSV 文件导入客户端所在节点,例如“/opt”目录下。
进入客户端目录,上传 CSV 文件到 HDFS 的“/data”目录。cd /opt/client source ./bigdata_env source ./Spark2x/component_env kinit sparkuser hdfs dfs -put /opt/test.csv /data/
连接到 CarbonData
在对 CarbonData 进行任何一种操作之前,首先需要连接到 CarbonData。
使用 Spark SQL 或 Spark shell 连接到 Spark 并执行 Spark SQL 命令。
开启 JDBCServer 并使用 JDBC 客户端(例如,Spark Beeline)连接。cd /opt/client/Spark2x/spark/bin ./spark-beeline
创建 CarbonData Table
在 Spark Beeline 被连接到 JDBCServer 之后,需要创建一个 CarbonData table 用于加载数据和执行查询操作。
例如下面是创建一个简单的表的命令:
命令执行结果如下:
加载数据到 CarbonData Table
创建 CarbonData table 之后,可以从 CSV 文件加载数据到所创建的表中。
表的列名需要与 CSV 文件的列名匹配。
其中,“test.csv”为准备的 CSV 文件,“x1”为示例的表名。
命令执行结果如下:
在 CarbonData 中查询数据
创建 CarbonData table 并加载数据之后,可以执行所需的数据查询操作。以下为一些查询操作举例。
获取记录数
为了获取在 CarbonData table 中的记录数,可以运行以下命令。
使用 Groupby 查询
为了获取不重复的 deviceinformationid 记录数,可以运行以下命令。
用 Filter 查询
为了获取特定 deviceinformationid 的记录,可以运行以下命令。
在执行数据查询操作后,如果查询结果中某一列的结果含有中文字等非英文字符,会导致查询结果中的列不能对齐,这是由于不同语言的字符在显示时所占的字宽不尽相同。
在 Spark-shell 上使用 CarbonData
创建 CarbonData table 并加载数据之后,可以执行所需的查询操作,例如 filters,groupby 等。
用户若需要在 Spark-shell 上使用 CarbonData,需通过如下方式创建 CarbonData Table,加载数据到 CarbonData Table 和在 CarbonData 中查询数据的操作。
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/29050cc63d4854d8907fc0c51】。文章转载请联系作者。
评论