CarbonData快速开始001

 

本教程提供了一个使用CarbonData的快速介绍。要学习本指南,请从CarbonData网站上下载一个打包的CarbonData版本。另外,也可以按照建立CarbonData的步骤来创建它。

先决条件

CarbonData支持Spark 2.4以下的版本。请从Spark网站下载Spark软件包。

使用以下命令创建一个sample.csv文件。该CSV文件是将数据加载到CarbonData中所需要的。

cd carbondata

cat > sample.csv << EOF

ID,name,city,age

1,David,Shenzhen,31

2,Eason,Shenzhen,27

3,Jarry,Wuhan,35

EOF

融合

与执行引擎的整合

CarbonData可以与Spark、Presto、Flink和Hive执行引擎集成。以下是关于这些执行引擎的安装和配置的指导文件。

Spark

安装和配置CarbonData,使其在本地使用Spark SQL CLI运行

安装和配置CarbonData,使其在本地用Spark Shell运行

在独立的Spark集群上安装和配置CarbonData

YARN集群的Spark上安装和配置CarbonData

安装和配置用于查询执行的CarbonData Thrift服务器

Presto

Presto上安装和配置CarbonData

Hive

Hive上安装和配置CarbonData

与存储引擎的整合

HDFS

CarbonData支持与HDFS的读和写

S3

CarbonData支持与S3的读和写

Alluxio

CarbonData支持与Alluxio的读写。

安装和配置CarbonData,使其在本地使用Spark SQL CLI运行

这将适用于spark 2.3以上版本。在Spark SQL CLI中,它使用CarbonExtensions在Spark中用CarbonData的解析器、分析器、优化器和物理规划策略规则来定制SparkSession。为了启用CarbonExtensions,我们需要添加以下配置。

key 

value

spark.sql.extensions

org.apache.spark.sql.CarbonExtensions

Spark目录下运行以下命令,启动Spark SQL CLI。

./bin/spark-sql --conf spark.sql.extensions=org.apache.spark.sql.CarbonExtensions --jars <carbondata assembly jar path>

创建一个表

CREATE TABLE IF NOT EXISTS test_table (

  id string,

  name string,

  city string,

  age Int)

STORED AS carbondata;

注意CarbonExtensions只支持 "STORED AS carbondata "和 "USING carbondata"

加载数据到一个表

LOAD DATA INPATH '/local-path/sample.csv' INTO TABLE test_table;

 

LOAD DATA INPATH 'hdfs://hdfs-path/sample.csv' INTO TABLE test_table;

 

insert into table test_table select '1', 'name1', 'city1', 1;

 

注意:请为上述脚本提供真实的文件路径,即sample.csv如果你遇到 "tablestatus.lock "的问题,请参考《常见问题》。

从一个表查询数据

SELECT * FROM test_table;

 

SELECT city, avg(age), sum(age)

FROM test_table

GROUP BY city;

安装和配置CarbonData,使其在本地用Spark Shell运行

Apache Spark Shell提供了一个学习API的简单方法,也是一个交互式分析数据的强大工具。请访问Apache Spark文档以了解更多关于Spark shell的细节。

基础知识

选项1:使用CarbonSession(自2.0起被废弃)。

Spark目录下运行以下命令,启动Spark shell。

./bin/spark-shell --jars <carbondata assembly jar path>

 

注意:下载CarbonData打包版本的路径或汇编jar将在构建CarbonData后可用,可从./assembly/target/scala-2.1x/apache-carbondata_xxx.jar复制。

在这个Shell中,SparkSession以只读spark的形式出现,Spark context以只读sc的形式出现。

为了创建一个CarbonSession,我们将不得不以下列方式明确配置它。

  • 输入以下内容。

import org.apache.spark.sql.SparkSession

import org.apache.spark.sql.CarbonSession._

  • 创建一个CarbonSession。

val carbon = SparkSession.builder().config(sc.getConf).getOrCreateCarbonSession("<carbon_store_path>")

 

注意事项

  • 默认情况下,元存储位置指向.../carbon.metastore,用户可以向CarbonSession提供自己的元存储位置,如只读

SparkSession.builder().config(sc.getConf).getOrCreateCarbonSession("<carbon_store_path>", "<local metastore path>").

  • 数据存储位置可以通过只读<carbon_store_path>来指定,比如只读/carbon/data/store,只读hdfs://localhost:9000/carbon/data/store或只读s3a://carbon/data/store。
选项2:使用SparkSession和CarbonExtensions

Spark目录下运行以下命令,启动Spark shell。

./bin/spark-shell --conf spark.sql.extensions=org.apache.spark.sql.CarbonExtensions --jars <carbondata assembly jar path>

 

注意事项

在这个流程中,我们可以使用内置的 SparkSession spark而不是carbon. spark如果需要,我们还可以创建一个新的 SparkSession 而不是内置的 SparkSession 。它需要将“org.apache.spark.sql.CarbonExtensions”添加到spark配置“spark.sql.extensions”中。

SparkSession newSpark = SparkSession

  .builder()

  .config(sc.getConf)

  .enableHiveSupport

  .config("spark.sql.extensions","org.apache.spark.sql.CarbonExtensions")

  .getOrCreate()

  • 数据存储位置可以通过 "spark.sql.warehouse.dir "指定。

执行查询

创建一个表

carbon.sql(

           s"""

              | CREATE TABLE IF NOT EXISTS test_table(

              |   id string,

              |   name string,

              |   city string,

              |   age Int)

              | STORED AS carbondata

           """.stripMargin)

注意:下表中列出了所有支持的语法。

创建表

带有CarbonExtensions的SparkSession

CarbonSession

存储为carbondata

使用Carbondata

存储于'carbondata'。

通过'org.apache.carbondata.format'存储。

我们建议使用CarbonExtensions而不是CarbonSession。

加载数据到一个表

carbon.sql("LOAD DATA INPATH '/path/to/sample.csv' INTO TABLE test_table")

 

注意:请为上述脚本提供真实的文件路径,即sample.csv。如果你遇到 "tablestatus.lock "的问题,请参考《常见问题》。

从一个表查询数据

carbon.sql("SELECT * FROM test_table").show()

 

carbon.sql(

           s"""

              | SELECT city, avg(age), sum(age)

              | FROM test_table

              | GROUP BY city

           """.stripMargin).show()

在独立的Spark集群上安装和配置CarbonData

先决条件

  • Hadoop HDFS和Yarn应该被安装和运行。
  • Spark应该在所有集群节点上安装和运行。
  • CarbonData用户应该有访问HDFS的权限。

程序

1. 构建CarbonData项目,从只读./assembly/target/scala-2.1x/apache-carbondata_xxx.jar中获取汇编jar。

2.  复制./assembly/target/scala-2.1x/apache-carbondata_xxx.jar至$SPARK_HOME/carbonlib文件夹。

注意:如果carbonlib文件夹在$SPARK_HOME路径中不存在,则创建它。

3.在Spark的classpath中添加carbonlib文件夹的路径。(编辑$SPARK_HOME/conf/spark-env.sh文件,修改SPARK_CLASSPATH的值,将$SPARK_HOME/carbonlib/*添加到现有值中)

4.从CarbonData资源库中复制./conf/carbon.properties.template文件到$SPARK_HOME/conf/文件夹,并将文件重命名为carbon.properties。

5.在集群的所有节点上重复步骤2至步骤4。

6.在Spark节点[master]中,在$SPARK_HOME/conf/spark-defaults.conf文件中配置下表中提及的属性。

key

value

描述

spark.driver.extraJavaOptions

-Dcarbon.properties.filepath = $SPARK_HOME/conf/carbon.properties

额外的JVM选项的字符串,以传递给驱动程序。例如,GC设置或其他日志记录。

spark.executor.extraJavaOptions

-Dcarbon.properties.filepath = $SPARK_HOME/conf/carbon.properties

一串额外的JVM选项,用于传递给执行器。例如,GC设置或其他记录。注意:你可以输入多个用空格分隔的值。

7.验证安装。比如说。

./bin/spark-shell \

--master spark://HOSTNAME:PORT \

--total-executor-cores 2 \

--executor-memory 2G

注意

  • 属性 "carbon.storelocation "在carbonondata 2.0版本中已被弃用。只有在以前的版本中使用过这个属性的用户在carbon 2.0版本中还可以使用。
  • 确保你有CarbonData JARs和文件的权限,驱动和执行器将通过这些文件启动。

YARN集群的Spark上安装和配置CarbonData

本节提供了在 "Spark on YARN "集群上安装CarbonData的步骤。

先决条件

  • Hadoop HDFS和Yarn应该被安装和运行。
  • Spark应该在所有的客户机上安装和运行。
  • CarbonData用户应该有访问HDFS的权限。

程序

下面的步骤只针对驱动节点。(驱动节点是启动spark上下文的节点。)

1. 构建CarbonData项目,从./assembly/target/scala-2.1x/apache-carbondata_xxx.jar中获取汇编jar并复制到$SPARK_HOME/carbonlib文件夹。 

注意:如果在$SPARK_HOME的路径中不存在carbonlib文件夹,则创建它。

2.从CarbonData资源库中复制./conf/carbon.properties.template文件到$SPARK_HOME/conf/文件夹,并将文件重命名为carbon.properties。 

3.创建carbonlib文件夹的tar.gz文件,并将其移到carbonlib文件夹内。 

cd $SPARK_HOME

tar -zcvf carbondata.tar.gz carbonlib/

mv carbondata.tar.gz carbonlib/

4. 在$SPARK_HOME/conf/spark-defaults.conf文件中配置下表中提到的属性。

属性

描述

value

spark.master

设置这个值是为了在yarn集群模式下运行Spark。

设置yarn-client,在yarn集群模式下运行Spark。

spark.yarn.dist.files

以逗号分隔的文件列表,这些文件将被放在每个执行器的工作目录中。

$SPARK_HOME/conf/carbon.properties

spark.yarn.dist.Archives

以逗号分隔的档案列表,这些档案将被提取到每个执行器的工作目录中。

$SPARK_HOME/carbonlib/carbondata.tar.gz

spark.executor.extraJavaOptions

一串额外的JVM选项,用于传递给执行者。例如,请注意:你可以输入多个用空格隔开的值。

-Dcarbon.properties.filepath = carbon.properties

spark.executor.extraClassPath

注意:如果SPARK_CLASSPATH在spark-env.sh中被定义,那么注释它并在下面的参数spark.driver.extraClassPath中添加数值。

carbondata.tar.gz/carbonlib/*

spark.driver.extraClassPath

额外的classpath条目将被预置到驱动程序的classpath中。注意:如果SPARK_CLASSPATH在spark-env.sh中被定义,那么注释它并在下面的参数spark.driver.extraClassPath中添加该值。

$SPARK_HOME/carbonlib/*

spark.driver.extraJavaOptions

额外的JVM选项的字符串,以传递给驱动程序。例如,GC设置或其他日志记录。

-Dcarbon.properties.filepath = $SPARK_HOME/conf/carbon.properties

5. 核实安装情况。

./bin/spark-shell \

--master yarn-client \

--driver-memory 1G \

--executor-memory 2G \

--executor-cores 2

注意

  • 属性 "carbon.storelocation "在carbonondata 2.0版本中已被弃用。只有在以前的版本中使用过这个属性的用户在carbon 2.0版本中还可以使用。
  • 确保你有CarbonData JARs和文件的权限,驱动和执行器将通过这些文件启动。
  • 如果使用Spark + Hive 1.1.X,需要在spark-default.conf文件中的参数'spark.sql.hive.metastore.jars'中添加carbondata assembly jar和carbondata-hive jar。

使用CarbonData Thrift服务器进行查询执行

启动CarbonData Thrift服务器。

a. cd $SPARK_HOME

b.运行下面的命令来启动CarbonData thrift服务器。

./bin/spark-submit \

--class org.apache.carbondata.spark.thriftserver.CarbonThriftServer \

$SPARK_HOME/carbonlib/$CARBON_ASSEMBLY_JAR

 

参数

描述

例子

CARBON_ASSEMBLY_JAR

在$SPARK_HOME/carbonlib/文件夹中的CarbonData汇编jar名称。

apache-carbondata-xx.jar

c.运行下面的命令,与S3存储一起工作。

./bin/spark-submit //bin/spark-submit

--class org.apache.carbondata.spark.thriftserver.CarbonThriftServer \class

$SPARK_HOME/carbonlib/$CARBON_ASSEMBLY_JAR <access_key> <secret_key> <endpoint>

参数

描述

例子

CARBON_ASSEMBLY_JAR

在$SPARK_HOME/carbonlib/文件夹中的CarbonData汇编jar名称。

apache-carbondata-xx.jar

access_key

S3存储的访问密钥

 

secret_key

S3存储的密匙

 

endpoint

连接到S3存储的端点

 

注意:从Spark 1.6开始,Thrift服务器默认以多会话模式运行。这意味着每个JDBC/ODBC连接都拥有一份自己的SQL配置和临时函数注册表。但缓存表仍然是共享的。如果你喜欢在单会话模式下运行Thrift服务器,并共享所有的SQL配置和临时函数注册表,请将选项spark.sql.hive.thriftServer.singleSession为true。你可以把这个选项添加到spark-defaults.conf中,或者通过--conf把它传递给spark-submit.sh。

./bin/spark-submit \

--conf spark.sql.hive.thriftServer.singleSession=true \

--class org.apache.carbondata.spark.thriftserver.CarbonThriftServer \

$SPARK_HOME/carbonlib/$CARBON_ASSEMBLY_JAR

但是在单会话模式下,如果一个用户改变了一个连接的数据库,其他连接的数据库也会被改变。

实例

  • 从默认的内存和执行器开始。

./bin/spark-submit \

--class org.apache.carbondata.spark.thriftserver.CarbonThriftServer \

$SPARK_HOME/carbonlib/apache-carbondata-xxx.jar

  • 从固定的执行者和资源开始。

./bin/spark-submit \

--class org.apache.carbondata.spark.thriftserver.CarbonThriftServer \

--num-executors 3 \

--driver-memory 20G \

--executor-memory 250G \

--executor-cores 32 \

$SPARK_HOME/carbonlib/apache-carbondata-xxx.jar

 

使用Beeline连接到CarbonData Thrift服务器。

cd $SPARK_HOME

./sbin/start-thriftserver.sh

./bin/beeline -u jdbc:hive2://<thriftserver_host>:port

 

Example

./bin/beeline -u jdbc:hive2://10.10.10.10:10000

 

Presto上安装和配置CarbonData

注意:CarbonData表不能被创建,也不能从Presto加载。用户需要创建CarbonData表,并使用SparkSDKC++ SDK向其中加载数据。一旦创建了表,就可以从Presto中进行查询。

请参考下面链接的presto指南。

prestodb guide - prestodb

prestosql guide - prestosql

一旦按照上述指南安装了带有carbonData的Presto,你就可以使用协调器上的Presto CLI,使用Presto工作者查询目录中的数据源。

列出可用的模式(数据库)。

show schemas;

选择了CarbonData表所在的模式

use carbonschema;

列出可用的表格

show tables;

从现有的表格中进行查询

select * from carbon_table;

注意:创建表和数据加载应该在执行查询之前完成,因为我们不能从这个界面创建carbon表。

 

posted @ 2021-09-17 14:06  田野与天  阅读(310)  评论(0编辑  收藏  举报