MapReduce服务 MRS-从零开始使用CarbonData:操作步骤

时间:2025-02-12 14:58:21

操作步骤

  1. 连接到Spark CarbonData。

    1. 根据业务情况,准备好客户端,使用root用户登录安装客户端的节点。

      例如在Master2节点更新客户端,则在该节点登录客户端,具体参见使用 MRS 客户端

    2. 切换用户与配置环境变量。

      sudo su - omm

      source /opt/client/bigdata_env

    3. 启用Kerberos认证的集群,执行以下命令认证用户身份。未启用Kerberos认证集群无需执行。

      kinit Spark组件用户名

      用户需要加入用户组hadoop、hive,主组hadoop。

    4. 执行以下命令,连接到Spark运行环境:

      spark-beeline

  2. 执行命令创建CarbonData表。

    CarbonData表可用于加载数据和执行查询操作,例如执行以下命令创建CarbonData表:

    CREATE TABLE x1 (imei string, deviceInformationId int, mac string, productdate timestamp, updatetime timestamp, gamePointId double, contractNumber double)

    STORED BY 'org.apache.carbondata.format'

    TBLPROPERTIES ('DICTIONARY_EXCLUDE'='mac','DICTIONARY_INCLUDE'='deviceInformationId');

    命令执行结果如下:

    +---------+--+| result  |+---------+--++---------+--+No rows selected (1.551 seconds)

  3. CS V文件加载数据到CarbonData表。

    根据所要求的参数运行命令从CSV文件加载数据,且仅支持CSV文件。LOAD命令中配置的CSV列名,需要和CarbonData表列名相同,顺序也要对应。CSV文件中的数据的列数,以及数据格式需要和CarbonData表匹配。

    文件需要保存在HDFS中。用户可以将文件上传到OBS,并在MRS管理控制台“文件管理”将文件从OBS导入HDFS,具体请参考导入导出数据

    如果集群启用了Kerberos认证,则需要在工作环境准备CSV文件,然后可以使用开源HDFS命令,参考5将文件从工作环境导入HDFS,并设置Spark组件用户在HDFS中对文件有读取和执行的权限。

    例如,HDFS的“tmp”目录有一个文件“data.csv”,内容如下:

    x123,111,dd,2017-04-20 08:51:27,2017-04-20 07:56:51,2222,33333

    执行导入命令:

    LOAD DATA inpath 'hdfs://hacluster/tmp/data.csv' into table x1 options('DELIMITER'=',','QUOTECHAR'='"','FILEHEADER'='imei, deviceinformationid,mac,productdate,updatetime,gamepointid,contractnumber');

    命令执行结果如下:

    +---------+--+| Result  |+---------+--++---------+--+No rows selected (3.039 seconds)

  4. 在CarbonData中查询数据。

    • 获取记录数

      为了获取在CarbonData table中的记录数,可以执行以下命令。

      select count(*) from x1;

    • 使用Groupby查询

      为了获取不重复的“deviceinformationid”记录数,可以执行以下命令。

      select deviceinformationid,count (distinct deviceinformationid) from x1 group by deviceinformationid;

    • 使用条件查询

      为了获取特定deviceinformationid的记录,可以执行以下命令。

      select * from x1 where deviceinformationid='111';

    在执行数据查询操作后,如果查询结果中某一列的结果含有中文字等其他非英文字符,会导致查询结果中的列不能对齐,这是由于不同语言的字符在显示时所占的字宽不尽相同。

  5. 执行以下命令退出Spark运行环境。

    !quit

support.huaweicloud.com/cmpntguide-mrs/mrs_01_0386.html