carbondata 安装文档
一、build CarbonData
1、先决条件:
OS: centos(类unix OS)
Apache Maven(推荐版本3.3或更高版本)
Oracle Java 7或8
Apache Thrift 0.9.3
以上条件缺一不可
2、git 下载carbondata,或者直接从官网下载已经发行的版本。官方最新发行版目前是1.1.0版本
地址:https://dist.apache.org/repos/dist/release/carbondata/1.1.0/
3、构建命令
进入到cabondata 的目录下,运行构建命令
构建无需测试,默认情况下carbondata采用Spark 1.6.2进行构建
mvn -DskipTests clean package(默认)
carbondata也支持使用不同版本的Spark构建(目前支持的版本有一下几个)。
mvn -DskipTests -Pspark-1.5 -Dspark.version=1.5.1 clean package
mvn -DskipTests -Pspark-1.5 -Dspark.version=1.5.2 clean package
mvn -DskipTests -Pspark-1.6 -Dspark.version=1.6.1 clean package
mvn -DskipTests -Pspark-1.6 -Dspark.version=1.6.2 clean package
mvn -DskipTests -Pspark-1.6 -Dspark.version=1.6.3 clean package
mvn -DskipTests -Pspark-2.1 -Dspark.version=2.1.0 clean package
注意:carbondata 构建过程中,会进行spak、hive、dhfs连接测试,如果spak、hive、dhfs未启动会导致编译不通过。
构建构建时,请注意后面的小版本号(-Dspark.version=1.6.1) ,这里踩过坑,构建的时候用的是spark2.1.1 ,配置完了运行报错,后面查阅github上的test log才发现carbondata不支持spark2.1.1.
carbon.sql("CREATE TABLE IF NOT EXISTS test_table(id string, name string, city string, age Int) STORED BY 'carbondata'")
java.lang.NoClassDefFoundError: org/apache/spark/sql/catalyst/CatalystConf
at org.apache.spark.sql.hive.CarbonSessionState.analyzer$lzycompute(CarbonSessionState.scala:127)
at org.apache.spark.sql.hive.CarbonSessionState.analyzer(CarbonSessionState.scala:126)
at org.apache.spark.sql.execution.QueryExecution.analyzed$lzycompute(QueryExecution.scala:69)
at org.apache.spark.sql.execution.QueryExecution.analyzed(QueryExecution.scala:67)
at org.apache.spark.sql.execution.QueryExecution.assertAnalyzed(QueryExecution.scala:50)
at org.apache.spark.sql.Dataset$.ofRows(Dataset.scala:63)
at org.apache.spark.sql.SparkSession.sql(SparkSession.scala:592)
如果构建过程中没有遇到错误,carbondata目录下会生成assembly/target/scala-2.11/carbondata_2.11-1.1.0-shade-hadoop2.2.0.jar 的jar包。
注:如果遇到错误,可在构建命令中加上 hadoop 版本和scala版本 如 mvn -DskipTests -Pspark-2.1 -Dspark.version=2.1.0 -Pscala-2.1 -Dscala.version=2.11.8 clean package
由于carbondata 文档不完善,构建过程中可能会遇到很多奇怪的问题,如果遇到,请分享一起探讨
二、安装配置
1、复制./assembly/target/scala-2.1x/carbondata_xxx.jar到SPARK_HOME/carbonlib文件夹。
注意:如果carbonlib文件夹在SPARK_HOME路径中不存在,则创建它。
2、在Spark类路径中添加carbonlib文件夹路径。(编辑 SPARK_HOME/conf/spark-env.sh文件并修改SPARK_CLASSPATH附加SPARK_HOME/carbonlib/*到现有值的值)
3、将./conf/carbon.properties.template文件从CarbonData存储库复制到文件SPARK_HOME/conf/夹,并将文件重命名为carbon.properties。
4、在集群的所有节点中重复步骤2到步骤5。
5、在Spark节点[master]中,配置SPARK_HOME/conf/spark-defaults.conf文件中下表中提到的属性。
属性 | 值 | 描述
------------------|-------------|
spark.driver.extraJavaOptions| -Dcarbon.properties.filepath=SPARK_HOME/conf/carbon.properties| 额外传递给驱动程序的JVM选项。例如,GC设置或其他日志记录。
|spark.executor.extraJavaOptions| -Dcarbon.properties.filepath=SPARK_HOME/conf/carbon.properties |额外传递给executors的JVM选项。例如,GC设置或其他日志记录。注意:您可以输入以空格分隔的多个值。
6、在SPARK_HOME/conf/carbon.properties文件中添加以下属性:
7、验证安装。例如
启动spark-shell
在spark-shell中执行一下代码,创建一个表
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.CarbonSession._
val carbon = SparkSession.builder().config(sc.getConf).getOrCreateCarbonSession("hdfs://co1:9000/Opt/CarbonStore")
carbon.sql("CREATE TABLE IF NOT EXISTS test_table(id string, name string, city string, age Int) STORED BY 'carbondata'")
carbon.sql("LOAD DATA INPATH 'hdfs://co1:9000/test_data.csv' INTO TABLE test_table")
carbon.sql("SELECT * FROM test_table").show()
carbon.sql("SELECT city, avg(age), sum(age) FROM test_table GROUP BY city").show()
如过上述过程没有报错,表示carbondata 安装成功执行结果如图。