环境准备
Maven 版本: 3.5.4
Scala 版本 : 2.11.12
Spark版本: 2.4.0
Hadoop版本: 3.0.0
carbondata 2.3.0 (当前最新)
源码修改
1: 将源码中的files.toArray 改为 files.toSeq 否则编译报错
polymorphic expression cannot be instantiated to expected type
def createFilePartition(index: Int, files: ArrayBuffer[PartitionedFile]): FilePartition = {
FilePartition(index, files.toSeq)
}
2: 编译spark的时由于将pom文件仓库改为了cloudrea 的仓库 编译时有一个类找不到
org.apache.spark.sql.execution.datasources.orc.OrcFileFormat
OrcFileFormat 在原生spark-sql依赖中有该类 在spark-sql-cdh6.3.2中没有 3: 编译hive模块时 由于将pom文件仓库改为了cloudrea 的仓库 编译时有一个类找不到
org.apache.hadoop.hive.ql.metadata.StorageHandlerInfo
StorageHandlerInfo 类 在原生hive-exce 依赖 而在hive-exce-cdh6.3.2中找不到该类 4: 编译时遇到findbugs-maven-plugin插件的问题:
Failed to execute goal org.codehaus.mojo:findbugs-maven-plugin:3.0.4:check (analyze-compile) on project carbondata-core: failed with 1 bugs and 0 errors
解决方案: 1: 将 maven-duplicate-finder-plugin 插件的版本设置为1.0.9 2: 将findbugs-maven-plugin 插件的阈值改为 High 5:Carbon-processing模块报错 解决方案: 添加依赖
<dependency>
<groupId>org.apache.htrace</groupId>
<artifactId>htrace-core</artifactId>
<version>3.1.0-incubating</version>
</dependency>
6: 找到hive-jdbc 依赖 添加exclusion
<exclusions>
<exclusion>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-runner</artifactId>
</exclusion>
</exclusions>
编译
mvn -DskipTests -Pspark-2.4 clean package
编译后产生的jar包路径
cdh hive集成 carbondata
1: 第一步 :将编译后产生的jar包放到hive auxlibs 目录中 并将 spark jars 目录 中的spark-catalyst*.jar 和 scala*.jar 也复制到 hive auxlibs 目录中
(hive auxlibs 目录可以在cdh cm-web 控制台中找到)
2: 复制编译后产生的jar包 放到 hive/lib/ 和yarn/lib/
第二步:修改hive-site.xml 配置
在cm-web管理界面找到hive-site.xml 并添加如下的配置
<property>
<name>hive.metastore.pre.event.listeners</name>
<value>org.apache.carbondata.hive.CarbonHiveMetastoreListener</value>
</property>
编译后的源码地址:
https://github.com/liutaobigdata/cdh_integrate_carbondata2.3
|