sparkStreaming写入Phoenix代码以及部署过程中遇到的问题以及解决方案
写入代码
1 | rdd.flatMap(x => x).map(json => { |
可以直接通过dataframe写Phoenix,但是遇到Phoenix列名是小写,但是saveToPhoenix会将dataframe的列名映射为大写导致列名不匹配的异常
问题
以下两个问题均是在单独配置Phoenix的高版本CDH集群中出现的,在低版本官方支持集成的版本中未出现问题
问题1
1 | java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.phoenix.mapreduce.PhoenixOutputFormat not found |

解决方法:在spark的classpath里面即/etc/conf/spark/classpath.txt中增加Phoenix library jar
1
2
3
4
5
6
7
8
9 /opt/apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-4.14.0-cdh5.14.2-client.jar
/opt/apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-4.14.0-cdh5.14.2-queryserver.jar
/opt/apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-4.14.0-cdh5.14.2-server.jar
/opt/apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-4.14.0-cdh5.14.2-thin-client.jar
/opt/apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-core-4.14.0-cdh5.14.2-sources.jar
/opt/apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-core-4.14.0-cdh5.14.2.jar
/opt/apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-spark-4.14.0-cdh5.14.2-javadoc.jar
/opt/apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-spark-4.14.0-cdh5.14.2-sources.jar
/opt/apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-spark-4.14.0-cdh5.14.2.jar
问题2
1 | java.sql.SQLException: ERROR 726 (43M10): Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enabled |

解决方法:提交命令增加 –files /etc/hbase/conf/hbase-site.xml