• 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表。

  • 相关阅读:
    Superset 制作图表
    superset 安装配置
    python 虚拟环境 pyenv
    pymysql 单独获取表的栏位名称
    pymysql 返回数据为字典形式(key:value--列:值)
    Oracle/MySQL decimal/int/number 转字符串
    netstat 问题处理
    MySQL 中Index Condition Pushdown (ICP 索引条件下推)和Multi-Range Read(MRR 索引多范围查找)查询优化
    MySQL执行计划extra中的using index 和 using where using index 的区别
    ref与out
  • 原文地址:https://www.cnblogs.com/lukairui/p/15304388.html
Copyright © 2020-2023  润新知