【Spark實戰】Spark操作HBase問題:java.io.IOException: Non-increasing Bloom keys
1 問題描述
在使用Spark BulkLoad資料到HBase時遇到以下問題:
17/05/19 14:47:26 WARN scheduler.TaskSetManager: Lost task 0.0 in stage 12.0 (TID 79, bydslave5, executor 3): java.io.IOException: Non-increasing Bloom keys: 80a01055HAXMTXG10100001KEY_VOLTAGE_T_C_PWR after af401055HAXMTXG10100001KEY_VOLTAGE_TEC_PWR
at org.apache.hadoop.hbase.regionserver.StoreFile$Writer.appendGeneralBloomfilter(StoreFile.java:911)
at org.apache.hadoop.hbase.regionserver.StoreFile$Writer.append(StoreFile.java:947)
at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2$1.write(HFileOutputFormat2.java:199)
at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2$1.write(HFileOutputFormat2.java:152)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1$$anonfun$12$$anonfun$apply$4.apply$mcV$sp(PairRDDFunctions.scala:1125)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1$$anonfun$12$$anonfun$apply$4.apply(PairRDDFunctions.scala:1123)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1$$anonfun$12$$anonfun$apply$4.apply(PairRDDFunctions.scala:1123)
at org.apache.spark.util.Utils$.tryWithSafeFinallyAndFailureCallbacks(Utils.scala:1341)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1$$anonfun$12.apply(PairRDDFunctions.scala:1131)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1$$anonfun$12.apply(PairRDDFunctions.scala:1102)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
at org.apache.spark.scheduler.Task.run(Task.scala:99)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:282)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
那麼是在什麼時候出現的呢?在執行完下面語句
val rdd = sc.textFile("/data/produce/2015/service.log.2017-04-24-08").map(_.split("@")).map{x => (DigestUtils.md5Hex(x(0)+x(1)).substring(0,3)+x(0)+x(1),x(2))}.map{x=>{val kv:KeyValue = new KeyValue(Bytes.toBytes(x._1),Bytes.toBytes("v"),Bytes.toBytes("value"),Bytes.toBytes(x._2+""));(new ImmutableBytesWritable(kv.getKey),kv)}}
rdd.saveAsNewAPIHadoopFile("/tmp/data1",classOf[ImmutableBytesWritable],classOf[KeyValue],classOf[HFileOutputFormat],job.getConfiguration())
從報錯資訊來看是因為key沒有按照遞增的順序進行排列,可能是BloomFilter對key的排序有要求,但是我們知道key的無序是因為spark在shuffle階段並沒有像MapReduce那樣強制排序,所以要解決這個問題我們需要手動地為資料進行排序,只需要對rdd執行sortBy即可。
2 問題解決
下面語句是增加排序的語句,經過測試執行通過
val rdd = sc.textFile("/data/produce/2015/service.log.2017-04-24-08").map(_.split("@")).map{x => (DigestUtils.md5Hex(x(0)+x(1)).substring(0,3)+x(0)+x(1),x(2))}.sortBy(x =>x._1).map{x=>{val kv:KeyValue = new KeyValue(Bytes.toBytes(x._1),Bytes.toBytes("v"),Bytes.toBytes("value"),Bytes.toBytes(x._2+""));(new ImmutableBytesWritable(kv.getKey),kv)}}
rdd.saveAsNewAPIHadoopFile("/tmp/data1",classOf[ImmutableBytesWritable],classOf[KeyValue],classOf[HFileOutputFormat],job.getConfiguration())
相關文章
- spark與hbaseSpark
- HBase實操:HBase-Spark-Read-Demo 分享Spark
- Spark+Hbase 億級流量分析實戰( PV/UV )Spark
- Spark —— Spark OOM Error問題排查定位SparkOOMError
- Spark 問題集Spark
- Spark+Hbase 億級流量分析實戰( 留存計算)Spark
- Spark 系列(十四)—— Spark Streaming 基本操作Spark
- 【Spark篇】---Spark解決資料傾斜問題Spark
- spark2.2.0 配置spark sql 操作hiveSparkSQLHive
- Spark學習——問題排查Spark
- spark讀取hbase的資料Spark
- Spark+Hbase 億級流量分析實戰(日誌儲存設計)Spark
- 【scala】問題cannot resolve symbol sparkSymbolSpark
- MapReduce和Spark讀取HBase快照表Spark
- Spark 如何寫入HBase/Redis/MySQL/KafkaSparkRedisMySqlKafka
- Spark綜合使用及使用者行為案例訪問session統計分析實戰-Spark商業應用實戰SparkSession
- 實戰|使用Spark Streaming寫入HudiSpark
- Spark SQL知識點與實戰SparkSQL
- CDH版Hadoop-zookeeper-hbase-spark安裝文件HadoopSpark
- Spark SQL知識點大全與實戰SparkSQL
- IDEA開發Spark應用實戰(Scala)IdeaSpark
- Spark任務OOM問題如何解決?SparkOOM
- Spark Streaming調優引數及最佳實踐深入剖析-Spark商業調優實戰Spark
- Spark 以及 spark streaming 核心原理及實踐Spark
- Spark Streaming + Spark SQL 實現配置化ETSparkSQL
- Spark操作Hive分割槽表SparkHive
- Spark操作開窗函式Spark函式
- Spark Streaming中的Window操作Spark
- Spark面試題Spark面試題
- Spark面試題(七)——Spark程式開發調優Spark面試題
- Spark面試題(八)——Spark的Shuffle配置調優Spark面試題
- Spark之spark shellSpark
- Hadoop/Spark相關面試問題總結HadoopSpark面試
- Spark SQL中出現 CROSS JOIN 問題解決SparkSQLROS
- Spark 環境問題記錄和解決方法Spark
- cdh版spark on yarn與idea直連操作sql遇到的一些問題SparkYarnIdeaSQL
- Spark on Yarn 實踐SparkYarn
- Spark 簡單例項(基本操作)Spark單例
- Spark應用程式開發引數調優深入剖析-Spark商業調優實戰Spark