Spark 使用Phoenix往HBase插入資料報錯 PhoenixOutputFormat not found
阿新 • • 發佈:2019-01-30
叢集版本:cdh5.8
Phoenix版本:4.7.0
專案依賴管理:Maven
描述:
在工作中,需要使用Phoenix往HBase寫資料,但是除錯的時候出現問題
17/06/12 09:35:46 ERROR kerberos.SaveAsPhoenixApp$: save to phoenix error :java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.phoenix.mapreduce.PhoenixOutputFormat not found java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.phoenix.mapreduce.PhoenixOutputFormat not found at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2199) at org.apache.hadoop.mapreduce.task.JobContextImpl.getOutputFormatClass(JobContextImpl.java:232) at org.apache.spark.rdd.PairRDDFunctions$anonfun$saveAsNewAPIHadoopDataset$1.apply$mcV$sp(PairRDDFunctions.scala:1083) at org.apache.spark.rdd.PairRDDFunctions$anonfun$saveAsNewAPIHadoopDataset$1.apply(PairRDDFunctions.scala:1074) at org.apache.spark.rdd.PairRDDFunctions$anonfun$saveAsNewAPIHadoopDataset$1.apply(PairRDDFunctions.scala:1074) at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:150) at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:111) at org.apache.spark.rdd.RDD.withScope(RDD.scala:316) at org.apache.spark.rdd.PairRDDFunctions.saveAsNewAPIHadoopDataset(PairRDDFunctions.scala:1074) at org.apache.spark.rdd.PairRDDFunctions$anonfun$saveAsNewAPIHadoopFile$2.apply$mcV$sp(PairRDDFunctions.scala:994) at org.apache.spark.rdd.PairRDDFunctions$anonfun$saveAsNewAPIHadoopFile$2.apply(PairRDDFunctions.scala:985) at org.apache.spark.rdd.PairRDDFunctions$anonfun$saveAsNewAPIHadoopFile$2.apply(PairRDDFunctions.scala:985) at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:150) at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:111) at org.apache.spark.rdd.RDD.withScope(RDD.scala:316) at org.apache.spark.rdd.PairRDDFunctions.saveAsNewAPIHadoopFile(PairRDDFunctions.scala:985) at org.apache.phoenix.spark.ProductRDDFunctions.saveToPhoenix(ProductRDDFunctions.scala:51) at com.yjf.phoenix.kerberos.SaveAsPhoenixApp$.saveRDDToPhoenixSIMPLELOG(SaveAsPhoenixApp.scala:144) at com.yjf.phoenix.kerberos.SaveAsPhoenixApp$.saveAsphoenixProcess(SaveAsPhoenixApp.scala:93) at com.yjf.phoenix.kerberos.SaveAsPhoenixApp$.main(SaveAsPhoenixApp.scala:156) at com.yjf.phoenix.kerberos.SaveAsPhoenixApp.main(SaveAsPhoenixApp.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$runMain(SparkSubmit.scala:731) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) Caused by: java.lang.ClassNotFoundException: Class org.apache.phoenix.mapreduce.PhoenixOutputFormat not found at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2105) at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2197) ... 29 more
各種除錯,最後成功解決!
解決方案:
增加 phoenix library jar paths in /etc/spark/conf/classpath.txt
/opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/phoenix-core-4.7.0-clabs-phoenix1.3.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/phoenix-spark-4.7.0-clabs-phoenix1.3.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/calcite-avatica-1.6.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/calcite-avatica-server-1.6.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/commons-csv-1.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/hbase-prefix-tree-1.2.0-cdh5.7.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/hbase-procedure-1.2.0-cdh5.7.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/phoenix-flume-4.7.0-clabs-phoenix1.3.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/phoenix-pherf-4.7.0-clabs-phoenix1.3.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/phoenix-pherf-4.7.0-clabs-phoenix1.3.0-minimal.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/phoenix-pig-4.7.0-clabs-phoenix1.3.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/phoenix-server-4.7.0-clabs-phoenix1.3.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/phoenix-server-4.7.0-clabs-phoenix1.3.0-runnable.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/phoenix-server-client-4.7.0-clabs-phoenix1.3.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/twill-api-0.6.0-incubating.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/twill-common-0.6.0-incubating.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/twill-core-0.6.0-incubating.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/twill-discovery-api-0.6.0-incubating.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/twill-discovery-core-0.6.0-incubating.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/twill-zookeeper-0.6.0-incubating.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/tephra-api-0.7.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/tephra-core-0.7.0.jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/lib/tephra-hbase-compat-0.98-0.7.0.jar